我知道这个问题非常基本,但是我正在寻找实现此目的的最佳方法。我的问题是,如何将一个numpy数组重塑为所附图片中的垂直箭头?
最后,我想将120 * 64 * 200重塑为1200 * 64 * 20!
答案 0 :(得分:3)
您也可以使用transpose
arr = np.array([i for i in range(1,19)])
arr3d = arr.reshape(3, 2,-1) # (1)
print(arr3d)
arr3d = arr3d.transpose(1,0,2) # (2) magic happens here
print(arr3d)
arr3d = arr3d.reshape(-1,3) # (3)
print(arr3d)
第一次重塑后,内容将为:
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]
[[13 14 15]
[16 17 18]]]
通过神奇的移调,您将得到:
[[[ 1 2 3]
[ 7 8 9]
[13 14 15]]
[[ 4 5 6]
[10 11 12]
[16 17 18]]]
然后将其重塑为2d。
通过方法链接,我们可以合并为一条语句,例如:
arr.reshape(3, 2, -1).transpose(1, 0, 2).reshape(-1, 3)
答案 1 :(得分:2)
我认为您正在寻找:
n_blocks = 2
b = np.concatenate(np.split(a, n_blocks, axis=1), axis=0)
您基本上想将数组拆分为块,然后将块连接到新轴上。