ndarray连接错误

时间:2015-09-30 07:13:56

标签: python numpy

我希望连接以下数组:

a=np.array([[1,2],[1],[2,3,4]])    
b=np.array([[20,2]])    
np.concatenate((a,b),axis=0)

但是我收到以下错误:

ValueError                                Traceback (most recent call last)
<ipython-input-40-42253341965b> in <module>()
----> 1 np.concatenate((a,b),axis=0)

ValueError: all the input arrays must have same number of dimensions

我期待答案是[[1,2],[1],[2,3,4],[20,2]]。如果b=np.array([20,2])代替连接工作正常,除了我得到答案:[[1,2],[1],[2,3,4],20,2]

1 个答案:

答案 0 :(得分:3)

检查a的dtype,ndim和形状:您会发现它们分别是numpy.object,1和(3,)。这是因为数组a包含不同长度的列表,因此每个列表都被视为一个对象,而a是一维对象数组。我不知道你的目标是什么,但是如果你希望a的ndim为2,你需要确保所有列表都有相同的长度。

当然,b的ndim为2,因为它只包含一个(嵌套)列表,这将总是产生一个规则的n维数组。

错误信息显而易见:您正在尝试连接两个具有不同维度的阵列:这不会起作用。

要获得您正在寻找的答案,[[1,2],[1],[2,3,4],[20,2]],您还需要将b的内部列表转换为对象:然后您重新连接两个1维对象数组。