我有一个 3x2x2 numpy 数组,我想将另一个 3x2 数组加入其中,这样我的新数组就是 3x2x3。我一直在尝试使用堆栈和连接,但我不断收到ValueError:所有输入数组必须具有相同的形状
。现有数组如下
array([[[1, 1],
[2, 2]],
[[3, 3],
[4, 4]],
[[5, 5],
[6, 6]]])
我希望加入另一个数组,如下所示:
array([[1, 2],
[3, 4],
[5, 6]])
输出如下:
array([[[1., 1., 1.],
[2., 2., 2.]],
[[3., 3., 3.],
[4., 4., 4.]],
[[5., 5., 5.],
[6., 6., 6.]]])
我不确定我是否正确编写了输出,因为 numpy 显示 3 维矩阵的方式让我感到困惑 - 结果应该具有形状(3,2,3)。我希望迭代地执行此操作,以便我可以继续扩展矩阵,以便形状为 (3,2,4) 然后 (3,2,5) 然后 (3,2,6) 等等...
最佳答案
将 3x2 数组 reshape 为 3x2x1,然后执行 dstack
:
a = array([[[1, 1],
[2, 2]],
[[3, 3],
[4, 4]],
[[5, 5],
[6, 6]]])
b = array([[1, 2],
[3, 4],
[5, 6]])
np.dstack((a, b[...,None]))
#array([[[1, 1, 1],
# [2, 2, 2]],
# [[3, 3, 3],
# [4, 4, 4]],
# [[5, 5, 5],
# [6, 6, 6]]])
np.dstack((a, b[...,None])).shape
#(3, 2, 3)
或者沿最后一个轴np.concatenate
:
np.concatenate((a, b[...,None]), axis=-1)
关于python - 如何在numpy中组合数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54405922/