2016-07-08 6 views
2

Hier ist ein Ausschnitt aus SciPy documentation (Stand 8. Juli 2016):Confusing Dokumentation über Achsen in SciPy

entlang einer Achse

Achsen für Arrays mit mehr als einer Dimension definiert sind, . Ein zweidimensionales Array hat zwei entsprechende Achsen: die erste verläuft vertikal nach unten über die Reihen (Achse 0) und die zweite verläuft horizontal über die Spalten (Achse 1).

Viele Operationen können entlang einer dieser Achsen stattfinden. Zum Beispiel wir jede Zeile eines Arrays summieren kann, in diesem Fall werden wir entlang Spalten arbeiten, oder Achse 1:

>>> x = np.arange(12).reshape((3,4))  
>>> x 
array([[ 0, 1, 2, 3], 
     [ 4, 5, 6, 7], 
     [ 8, 9, 10, 11]]) 

>>> x.sum(axis=1) 
array([ 6, 22, 38]) 

Ich denke, es ist ein Fehler, weil sie nicht alle Zeilen summieren, aber alle Spalten und daher verwenden sie axis = 1, weil sie durch alle Spalten iterieren (dh horizontal entlang Achse 1) und addieren sie.

Also meine Frage ist: Ist das ein Fehler in der Dokumentation oder verstehe ich nicht, wie Achsen in SciPy arbeiten?

Antwort

3

Betrachten Sie dieses Beispiel.

>>> print(a) 
[[ 0 1 2] 
[ 3 4 5] 
[ 6 7 8] 
[ 9 10 11]] 

Um über Spalten zusammenzufassen:

>>> a.sum(axis=0) 
array([18, 22, 26]) 

Oder Zeilen zu summieren:

>>> a.sum(axis=1) 
array([ 3, 12, 21, 30]) 

Ich hoffe, dass dies Ihr Zweifel löscht.

+2

Jetzt sehe ich: wenn sie sagen * Summe jeder Zeile * sie bedeuten eigentlich die Summe aller Elemente der Zeile für jede Zeile, und nicht alle Zeilen summieren (so habe ich zunächst die Phrase interpretiert). Im Grunde genommen fügen sie Spalten einer gegebenen Matrix hinzu und bewegen sich tatsächlich entlang der horizontalen Achse oder entlang von Spalten, und deshalb verwenden sie "Achse = 1". – Fazzolini

+0

Yup, du hast es richtig gemacht. Sie können die Antwort annehmen, wenn es Ihnen geholfen hat. – dazzieta