Python 如何在numpy中组合阵列?
我有一个3x2x2 numpy数组,我想加入另一个3x2数组,这样我的新数组就是3x2x3。我一直在尝试使用stack和concatenate,但我一直得到Python 如何在numpy中组合阵列?,python,numpy,concatenation,Python,Numpy,Concatenation,我有一个3x2x2 numpy数组,我想加入另一个3x2数组,这样我的新数组就是3x2x3。我一直在尝试使用stack和concatenate,但我一直得到ValueError:所有输入数组必须具有相同的形状。现有数组如下所示 array([[[1, 1], [2, 2]], [[3, 3], [4, 4]], [[5, 5], [6, 6]]]) 我希望加入另一个类似的阵列: array([[1, 2],
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数组重塑为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.沿最后一个轴连接
:
np.concatenate((a, b[...,None]), axis=-1)
您引用了
堆栈
错误消息,但串联
所有输入数组的维数必须相同。对吗?你知道怎么纠正吗?如何向(3,2)数组中添加维度?为什么要迭代执行此操作?为什么不将所有(3,2)数组收集到一个列表中,并用一个串联来连接它们
?您能给我介绍一下b[…,None]
?我尝试了b.重塑(3,2,1)
,但似乎不起作用。似乎只有np.dstack((a,b))
起作用。您可以看到np.newaxis
或None
的一些示例。而且b.重塑(3,2,1)
的工作方式应与b[…,无]