Numpy mehrdimensionales array slicing
Angenommen, ich habe einen 3x3x3 numpy-array mit
x = numpy.arange(27).reshape((3, 3, 3))
Nun, ich bekomme ein array mit den (0,1) - element von jedem 3x3 subarray mit x[:, 0, 1]
gibt array([ 1, 10, 19])
. Was ist, wenn ich ein Tupel (m,n) und abrufen wollen die (m,n) - element von jedem subarray(0,1) gespeichert, die in einem Tupel?
Angenommen, ich habe t = (0, 1)
. Ich habe versucht x[:, t]
, es muss aber nicht das richtige Verhalten - es gibt Zeilen 0 und 1 jedes subarray. Die einfachste Lösung, die ich gefunden habe, ist
x.transpose()[tuple(reversed(t))].transpose()
aber ich bin sicher, es muss einen besseren Weg geben. Natürlich, in diesem Fall könnte ich tun x[:, t[0], t[1]]
, aber das kann nicht verallgemeinert werden auf den Fall, wo ich nicht weiß wie viele Dimensionen x
und t
haben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
können Sie den index erstellen Tupel erste:
HYRY Lösung richtig ist, aber ich habe immer gefunden, numpy ist
r_
,c_
unds_
index-tricks, um ein bisschen befremdlich. So, hier ist das äquivalent, was mit einemslice
Objekt:Dass einzige argument Scheibe ist die stop-position (D. H.
None
Bedeutung alle in der gleichen Weise, dassx[:]
entsprichtx[None:None]
)