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.

InformationsquelleAutor James | 2011-09-06
Schreibe einen Kommentar