Ich habe eine 3D-Array in numpy, die ich in ein 1D-Array abflachen möchte. Ich möchte jede 2d "Schicht" des Arrays abflachen und jede nachfolgende Schicht in das 1d Array kopieren. B. für ein Array mit arr[:, :, 0] = [[1, 2], [3, 4]]
und arr[:, :, 1] = [[5, 6], [7, 8]]
möchte ich den Ausgang [1, 2, 3, 4, 5, 6, 7, 8]
sein.Wie entlang der 3. Dimension in numply glätten?
Zur Zeit habe ich den folgenden Code:
out = np.empty(arr.size)
for c in xrange(arr.shape[2]):
layer = arr[:, :, c]
out[c * layer.size:(c + 1) * layer.size] = layer.ravel()
Gibt es eine Möglichkeit, dies in numpy effizient zu erreichen (ohne for
Schleife)? Ich habe versucht, mit reshape
, transpose
und flatten
vergeblich herum zu verspielen.