gpt4 book ai didi

python - Numpy 将 2D reshape 为 3D : moving columns to "depth"

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:01 24 4
gpt4 key购买 nike

问题

如何将 2D 矩阵 reshape 为 3D 矩阵,其中的列“按深度”移动?

我想让数组a看起来像数组b

import numpy as np

a = np.array([
[1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3],
[1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3],
[1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3],
[1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3]
])

b = np.array([
[[1,1,1,1,1,1],
[1,1,1,1,1,1],
[1,1,1,1,1,1],
[1,1,1,1,1,1]],
[[2,2,2,2,2,2],
[2,2,2,2,2,2],
[2,2,2,2,2,2],
[2,2,2,2,2,2]],
[[3,3,3,3,3,3],
[3,3,3,3,3,3],
[3,3,3,3,3,3],
[3,3,3,3,3,3]],
])

我尝试做什么

结果不是我想要达到的结果

x = np.reshape(a, (a.shape[0], -1, 3))

我还尝试了以下方法:1)将a分成3组2) 尝试对这些集合进行 dstack 但没有产生想要的结果

b = np.hsplit(a,3)
c = np.dstack([b[0],b[1],b[2]])

最佳答案

应该这样做:

import numpy as np

a = np.array([
[1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3],
[1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3],
[1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3],
[1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3]
])

b = np.array([
[[1,1,1,1,1,1],
[1,1,1,1,1,1],
[1,1,1,1,1,1],
[1,1,1,1,1,1]],
[[2,2,2,2,2,2],
[2,2,2,2,2,2],
[2,2,2,2,2,2],
[2,2,2,2,2,2]],
[[3,3,3,3,3,3],
[3,3,3,3,3,3],
[3,3,3,3,3,3],
[3,3,3,3,3,3]],
])

a_new = np.swapaxes(a.reshape(a.shape[0], 3, -1), 0, 1)

np.array_equal(a_new, b)

-> 正确

关于python - Numpy 将 2D reshape 为 3D : moving columns to "depth",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57550107/

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