【发布时间】:2020-11-09 13:48:32
【问题描述】:
我正在寻找一种方法来重塑以下 1d-numpy 数组:
# dimensions
n = 2 # int : 1 ... N
h = 2 # int : 1 ... N
m = n*(2*h+1)
input_data = np.arange(0,(n*(2*h+1))**2)
预期的输出应该重新整形为(2*h+1)**2 形状为(n,n) 的块,例如:
input_data.reshape(((2*h+1)**2,n,n))
>>> array([[[ 0 1]
[ 2 3]]
[[ 4 5]
[ 6 7]]
...
[[92 93]
[94 95]]
[[96 97]
[98 99]]]
这些块最终需要重新塑造成一个(m,m)矩阵,以便它们堆叠成一行2*h+1块:
>>> array([[ 0, 1, 4, 5, 8, 9, 12, 13, 16, 17],
[ 2, 3, 6, 7, 10, 11, 14, 15, 18, 19],
...
[80, 81, 84, 85, 88, 89, 92, 93, 96, 97],
[82, 83, 86, 87, 90, 91, 94, 95, 98, 99]])
我的问题是,在第一次重塑为 (n,n) 块后,我似乎无法找到正确的轴排列。我查看了几个答案,例如this one,但都是徒劳的。
由于n 和h 的实际尺寸相当大,并且此操作在迭代过程中进行,因此我正在寻找一种有效的整形操作。
【问题讨论】: