尝试连接具有不同维度的两个数组

时间:2019-01-31 22:15:46

标签: python numpy

我正在学习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

3 个答案:

答案 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时,您必须了解尺寸以及如何根据需要调整尺寸。