如何将Bockwise转置应用于numpy数组

时间:2019-07-08 23:51:37

标签: python numpy

我知道这个问题非常基本,但是我正在寻找实现此目的的最佳方法。我的问题是,如何将一个numpy数组重塑为所附图片中的垂直箭头? numpy reshape

最后,我想将120 * 64 * 200重塑为1200 * 64 * 20!

2 个答案:

答案 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)

您基本上想将数组拆分为块,然后将块连接到新轴上。