我正在学习python,我有2个数组:
a = [[ 1 , 2 ]
[3, 4]]
b = [ 6,7]
当我打印得到的形状时:
a.shape = (2,2)
b.shape = (2,)
想要的结果是:
c = [[ 1, 2 , 6]
[3, 4, 7]]
我尝试过
c = a + b
和
c = np.concatenate((a, b),axis=None) #tried axis=0, axis=1
我不断收到类似的错误
ValueError: all the input arrays must have same number of dimensions
答案 0 :(得分:1)
也许您可以尝试按numpy example所示进行操作,但是b
的形状必须为(1, 2)
,只需将array作为数组的内部元素添加即可:np.array([[6,7]])
>
a = np.array([[1, 2 ],
[3, 4]])
b = np.array([[6,7]])
c = np.concatenate((a, b.T), axis=1)
输出:
[[1 2 6]
[3 4 7]]
答案 1 :(得分:0)
您可以使用numpy.vstack
In [22]: import numpy as np
In [23]: a = np.array([[1,2], [3,4]])
In [24]: b = np.array([6,7])
In [25]: np.vstack((a.T, b)).T
Out[25]:
array([[1, 2, 6],
[3, 4, 7]])
答案 2 :(得分:0)
In [868]: a = np.array([[1,2],[3,4]]); b = np.array([6,7])
In [869]: a.shape, b.shape
Out[869]: ((2, 2), (2,))
b
的尺寸为1,需要2才能匹配a
:
In [870]: np.reshape(b,(2,1))
Out[870]:
array([[6],
[7]])
现在concatenate
可以工作了:
In [871]: np.concatenate((a, np.reshape(b,(2,1))), axis=1)
Out[871]:
array([[1, 2, 6],
[3, 4, 7]])
np.vstack
之所以有效,是因为它可以根据需要添加新的初始尺寸。我添加了尾随尺寸。
从长远来看,有效地使用concatenate
时,您必须了解尺寸以及如何根据需要调整尺寸。