2016-04-26 11 views
1

私は1d配列に平坦化したいnumpyの3d配列を持っています。私は配列の各2次元 "レイヤー"を平坦化し、各連続するレイヤーを1次元配列にコピーしたいと思います。numpyで3次元に沿って平坦化する方法は?

たとえば、arr[:, :, 0] = [[1, 2], [3, 4]]との配列の場合、出力は[1, 2, 3, 4, 5, 6, 7, 8]になります。

現在、私は次のコードを持っている:

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() 

は(forループを使用せずに)numpyの中で効率的にこれを実現する方法はありますか?私はreshapetranspose、そしてflattenを使いこなしてみました。

答えて

1

または(最後の斧が最初になります):np.rollaxis(a,-1).ravel()

2

私はそれを考え出した:

out = arr.transpose((2, 0, 1)).flatten()

関連する問題