gpt4 book ai didi

python - 在多维空间中将多个子矩阵 reshape /组合为一个矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 14:14:25 24 4
gpt4 key购买 nike

我有一个大小为 (2, 2, 4, 2, 2) 的 5 维二进制数组“a”。结构如下所示,例如:

a[0,0]:
[[[ 0. 1.]
[ 0. 0.]]

[[ 0. 0.]
[ 0. 1.]]

[[ 0. 0.]
[ 0. 1.]]

[[ 0. 0.]
[ 1. 0.]]]

我想做的是制作一个 (2,2,4,4) 矩阵,它在最后两个轴上组合 2x2 矩阵,但采用平方结构。

结果应该是这样的:

result[0,0]:
[[0. 1. 0. 0.]
[0. 0. 0. 1.]
[0. 0. 0. 0.]
[0. 1. 1. 0.]]

我希望这已经足够清楚了。如果我把原始矩阵的括号放在结果中,它看起来像这样:

result[0,0]:
[[[0. 1. [0. 0.]
[0. 0.] 0. 1.]]
[[0. 0. [0. 0.]
[0. 1.] 1. 0.]]]

最佳答案

您似乎将第三个轴从 (4) 分解为 (2,2),并将拆分轴的前半部分引入倒数第二个轴位置。因此,有两种方法可以使用 np.reshape 实现这样的输出。和 np.transpose , 像这样 -

out = a.reshape(2,2,2,2,2,2).transpose(0,1,3,4,2,5).reshape(2,2,4,4)

out = a.reshape(2,2,2,-1,2).transpose(0,1,3,2,4).reshape(2,2,4,4)

sample 运行-

In [69]: a[0][0]
Out[69]:
array([[[49, 91],
[10, 32]],

[[71, 27],
[50, 64]],

[[ 9, 41],
[73, 52]],

[[54, 85],
[53, 36]]])

In [70]: out1 = a.reshape(2,2,2,2,2,2).transpose(0,1,3,4,2,5).reshape(2,2,4,4)

In [71]: out2 = a.reshape(2,2,2,-1,2).transpose(0,1,3,2,4).reshape(2,2,4,4)

In [72]: out1[0][0]
Out[72]:
array([[49, 91, 9, 41],
[10, 32, 73, 52],
[71, 27, 54, 85],
[50, 64, 53, 36]])

In [73]: out2[0][0]
Out[73]:
array([[49, 91, 9, 41],
[10, 32, 73, 52],
[71, 27, 54, 85],
[50, 64, 53, 36]])

关于python - 在多维空间中将多个子矩阵 reshape /组合为一个矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34606602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com