Sie benötigen einen Auffrischungskurs zum Schneiden von Numpy-Ndarray-Arrays. Auch bekannt als mehrdimensionale Array - Indizierung finden Sie unter : docs.scipy.org/doc/numpy-1.13.0/reference/arrays.indexing.html Array slice Ihre ndarray eckige Klammern verwenden, und verwenden Sie das Komma als Trennzeichen zu trennen , wie viel von jedem Dimension, die Sie wollen. Es sieht ungefähr so aus (nicht genau): your_array[50:100, 7, :]Dadurch wird das 3D-Objekt auf 2d abgeflacht, wobei nur Slice Nummer 7 für die 2. Dimension verwendet wird.
>>> arr = numpy.zeros((50,100,25))>>> arr.shape
# (50, 100, 25)>>> new_arr = arr.reshape(5000,25)>>> new_arr.shape
# (5000, 25)# One shape dimension can be -1. # In this case, the value is inferred from # the length of the array and remaining dimensions.>>> another_arr = arr.reshape(-1, arr.shape[-1])>>> another_arr.shape
# (5000, 25)
Eine leichte Verallgemeinerung von Alexanders Antwort - np.reshape kann -1 als Argument nehmen, was "Gesamtgröße des Arrays geteilt durch das Produkt aller anderen aufgelisteten Dimensionen" bedeutet:
zB um alle bis auf die letzte Dimension zu glätten:
Eine leichte Verallgemeinerung der Antwort von Peter: Sie können einen Bereich über der Form des ursprünglichen Arrays angeben, wenn Sie über dreidimensionale Arrays hinausgehen möchten.
zB um alle bis auf die letzten beiden Dimensionen zu glätten :
your_array[50:100, 7, :]
Dadurch wird das 3D-Objekt auf 2d abgeflacht, wobei nur Slice Nummer 7 für die 2. Dimension verwendet wird.Antworten:
Schauen Sie sich numpy.reshape an .
quelle
Eine leichte Verallgemeinerung von Alexanders Antwort - np.reshape kann -1 als Argument nehmen, was "Gesamtgröße des Arrays geteilt durch das Produkt aller anderen aufgelisteten Dimensionen" bedeutet:
zB um alle bis auf die letzte Dimension zu glätten:
quelle
Eine leichte Verallgemeinerung der Antwort von Peter: Sie können einen Bereich über der Form des ursprünglichen Arrays angeben, wenn Sie über dreidimensionale Arrays hinausgehen möchten.
zB um alle bis auf die letzten beiden Dimensionen zu glätten :
EDIT: Eine leichte Verallgemeinerung meiner früheren Antwort - Sie können natürlich auch einen Bereich am Anfang der Umformung angeben:
quelle
Ein alternativer Ansatz ist die Verwendung
numpy.resize()
wie folgt :quelle