Wie für a = np.arange(24).reshape(2,3,4)
Colon, ohne, slice (None) in numpy Array Indexer
a[0,:,1]
oder a[0,slice(None),1]
Ausgänge array([1, 5, 9])
während a[0,None,1]
gibt array([[4, 5, 6, 7]])
Könnte sb letztere erklären?
Wie für a = np.arange(24).reshape(2,3,4)
Colon, ohne, slice (None) in numpy Array Indexer
a[0,:,1]
oder a[0,slice(None),1]
Ausgänge array([1, 5, 9])
während a[0,None,1]
gibt array([[4, 5, 6, 7]])
Könnte sb letztere erklären?
Mit einem rohen None
(nicht in slice
) ist das gleiche wie mit np.newaxis
, von denen es aber ein Alias ist.
In Ihrem Fall:
a[0,None,1]
ist wie ein [0,np.newaxis,1]
, daher der Ausgangslice(None)
ist wie "Scheibe nichts", weshalb a[0,:,1]
die gleiche wie a[0,slice(None),1]
ist. Siehe numpy Indexing doc.'np.newaxis' ist wörtlich sinnvoll und ich vernachlässige es ist gleichbedeutend mit' None' ... – Lee
Ja. Zu BrenBarns Kommentar zu Moses 'Antwort: Das überraschende Ergebnis ergibt sich aus der Kombination von Slicing und 'None'. - 'a [0,1, keine] = a [0,1,:] [Keine] = Array ([[4, 5, 6, 7]])' - 'a [0, None, 1] = a [0, keine] [: 1] = Array ([[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]]) [:, 1] = array ([[4, 5, 6, 7]])) – Tttt1228
Es tut mir leid, dass ich Moses 'Antwort nicht direkt kommentieren konnte. Ich habe nicht genug Reputation, um zu kommentieren. – Tttt1228
a[0,None,1]
ist die gleiche wie a[0, 1]
aber mit einer zusätzlichen Achse im Ergebnis.
newaxis
Das Objekt kann in allen Slicing-Operationen verwendet werden, um eine eine Achse von Länge zu erstellen.:const: newaxis
ist ein Alias für‘None’
, und kann stattdessen mit dem gleichen Ergebnis verwendet werden.
So ist a[0,None,1]
die gleiche wie a[0,np.newaxis,1]
In diesem Fall, wo None
platziert wird, ist nicht von Bedeutung, aber jeder None
fügt eine neue Achse.
>>> a[0,None, 1]
array([[4, 5, 6, 7]])
>>> a[None,None,0,1]
array([[[4, 5, 6, 7]]])
>>> a[0,np.newaxis,1]
array([[4, 5, 6, 7]])
Verstanden. Und 'None' ist wirklich kein gutes Keyword für Google ... – Lee
Manchmal müssen Sie direkt zu den Dokumenten gehen :)) –
Es ist überraschend, dass die Position von None nicht relevant ist, da die Dokumente sagen: "Die hinzugefügte Dimension ist die Position des newaxis-Objekts im Auswahltupel". – BrenBarn
@GWW nein, tut es nicht! – Meitham
Meine Version '2.7.12 | Anaconda 2.3.0 (64-Bit)'. Ich habe erneut 'a [0, None, 1]' bestätigt. Und zu den Leuten, die abwerten, könntest du ein paar Kommentare geben? – Lee
Was hast du erwartet? – BrenBarn