ValueError:无法连接零维数组

时间:2018-01-27 00:15:42

标签: python arrays numpy concatenation

我有以下值,每个值都是double类型的标量:a1, a2, a3, a4, a5

我尝试使用Numpy连接它们,如下所示:

f = np.concatenate((a1,a2,a3,a4,a5))

但是我收到以下错误:

ValueError: zero-dimensional arrays cannot be concatenated

我可能做错了什么?

感谢。

2 个答案:

答案 0 :(得分:1)

concatenate将列表中的每个项目转换为数组(如果尚未加入),并尝试加入它们:

In [129]: np.concatenate([1,2,3,4])
...

ValueError: zero-dimensional arrays cannot be concatenated

hstack执行以下步骤:arrs = [atleast_1d(_m) for _m in tup],确保它们至少为1d:

In [130]: np.hstack([1,2,3,4])
Out[130]: array([1, 2, 3, 4])

但是从标量创建数组的标准方法是np.array,它沿着新轴连接项目:

In [131]: np.array([1,2,3,4])
Out[131]: array([1, 2, 3, 4])

请注意,1个标量的np.array是一个0d数组:

In [132]: np.array(1)
Out[132]: array(1)

In [133]: _.shape
Out[133]: ()

如果我想加入4个0d数组,那会多长时间? 4 * 0 = 0?在它们的公共轴上连接的4个1d阵列是4 * 1 = 4;根据轴的不同,4个2d阵列(n,m)将是(4n,m)或(n,4m)。

np.stack也有效。它做了类似的事情:

In [139]: np.concatenate([np.expand_dims(i,axis=0) for i in [1,2,3,4]])
Out[139]: array([1, 2, 3, 4])

答案 1 :(得分:0)

标量是0维数组,因此它们不能连接。增加它们的尺寸可能允许你连接它们,否则你不能在标量上使用这个方法。