gpt4 book ai didi

python - 如何按照我需要的方式 reshape 这个数组?

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

我想 reshape 一个由三个 2x2 矩阵组成的数组,形状为 (3,2,2) 即

a = np.array([[[a1,a2],[a3,a4]],
[[b1,b2],[b3,b4]],
[[c1,c2],[c3,c4]]])

到这个形状数组 (2,2,3):

[[[a1,b1,c1],[a2,b2,c2]],
[[a3,b3,c3],[a4,b4,c4]]])

常规 np.reshape(a, (2,2,3)) 返回此数组:

[[[a1, a2, a3],[a4, b1, b2]],
[[b3, b4, c1],[c2, c3, c4]]]

np.reshape(a, (2,2,3), order = 'F') 带来了这个:

[[[a1, b3, c2],[c1, a2, b4]],
[[b1, c3, a4],[a3, b2, c4]]]

如何 reshape 初始数组以获得我需要的?

这是为了与 matplotlib.pyplot.imshow 一起使用,其中三个初始矩阵对应于三种颜色“RGB”,每个元素都是 [0,1 范围内的 float ].因此,如果有更好的方法,我也很乐意知道。

最佳答案

我们只需要置换轴。有两种方法。

使用np.transpose -

a.transpose(1,2,0) # a is input array
# or np.transpose(a,(1,2,0))

我们也可以使用np.moveaxis -

np.moveaxis(a,0,2)    # np.moveaxis(a, 0, -1)

sample 运行-

In [157]: np.random.seed(0)

In [158]: a = np.random.randint(11,99,(3,2,2))

In [159]: a
Out[159]:
array([[[55, 58],
[75, 78]],

[[78, 20],
[94, 32]],

[[47, 98],
[81, 23]]])

In [160]: a.transpose(1,2,0)
Out[160]:
array([[[55, 78, 47],
[58, 20, 98]],

[[75, 94, 81],
[78, 32, 23]]])

关于python - 如何按照我需要的方式 reshape 这个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55591077/

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