numpy 数组连接错误:0-d 数组无法连接

Posted

技术标签:

【中文标题】numpy 数组连接错误:0-d 数组无法连接【英文标题】:numpy array concatenation error: 0-d arrays can't be concatenated 【发布时间】:2014-10-16 16:06:30 【问题描述】:

我正在尝试连接两个 numpy 数组,但出现此错误。有人能告诉我这实际上意味着什么吗?

    Import numpy as np
    allValues = np.arange(-1, 1, 0.5)
    tmp = np.concatenate(allValues, np.array([30], float))

然后我得到了

ValueError: 0-d arrays can't be concatenated

如果我这样做

    tmp = np.concatenate(allValues, np.array([50], float))

没有错误信息,但 tmp 变量也不反映串联。

【问题讨论】:

【参考方案1】:

您需要将要连接的数组放入参数中的序列(通常是元组或列表)中。

tmp = np.concatenate((allValues, np.array([30], float)))
tmp = np.concatenate([allValues, np.array([30], float)])

检查documentation 是否有np.concatenate。请注意,第一个参数是数组的序列(例如列表、元组)。它确实将它们作为单独的参数。

据我所知,这个 API 由所有 numpy 的连接函数共享:concatenatehstackvstackdstackcolumn_stack 都采用一个主参数,应该是一些数组序列。


您收到该特定错误的原因是数组也是序列。但这意味着concatenateallValues 解释为要连接的数组序列。但是,allValues 的每个元素都是浮点数而不是数组,因此被解释为零维数组。正如错误所说,这些“数组”无法连接。

第二个参数作为concatenate 的第二个(可选)参数,它是要连接的轴。这只有效,因为第二个参数中有一个元素,它可以转换为整数,因此是一个有效值。如果你在第二个参数中放置了一个包含更多元素的数组,你会得到一个不同的错误:

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

# TypeError: only length-1 arrays can be converted to Python scalars

【讨论】:

【参考方案2】:

还要确保连接两个 numpy 数组。我将一个 python 数组与一个 numpy 数组连接起来,它给了我同样的错误:

ValueError: 0-d arrays can't be concatenated

我花了一些时间才弄清楚这一点,因为 *** 中的所有答案都假设您有两个 numpy 数组。 非常愚蠢但很容易被忽视的错误。因此发布以防万一这对某人有帮助。

这里是使用np.asarray转换现有python数组的链接 要么 create np arrays,如果有帮助的话。

【讨论】:

【参考方案3】:

获得此错误的另一种方法是拥有两个不同类型的 numpy 对象?

我在尝试np.concatenate([A,B]) 时收到此错误

当我运行np.concatenate([B,A])ValueError: all the input arrays must have same number of dimensions

正如@mithunpaul 提到的,我的类型是关闭的:A 是一个 44279x204 的数组,B 是一个 <44279x12 sparse matrix of type '<class 'numpy.float64'>' with 88558 stored elements in Compressed Sparse Row format>)

这就是错误发生的原因。不过还不知道怎么解决。

【讨论】:

np.concatenate() 不适用于稀疏矩阵。对于您的示例,请使用 np.concatenate([B.todense(),A])。如果两者都是稀疏的,那么.todense() 他们都是。

以上是关于numpy 数组连接错误:0-d 数组无法连接的主要内容,如果未能解决你的问题,请参考以下文章

Numpy 将二维数组与一维数组连接起来

Numpy:连接多维和一维数组

使用 numpy 数组连接列向量

Numpy 数组:连接展平和添加维度

Python入门第四十八天Python丨NumPy 数组连接

连接 Numpy 数组而不复制