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

2024-04-28 20:24:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图连接两个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变量也不反映连接。


Tags: importnumpyas错误np数组floatarray
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是A<44279x12 sparse matrix of type '<class 'numpy.float64'>' with 88558 stored elements in Compressed Sparse Row format>)

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

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

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

检查documentation中的np.concatenate。注意,第一个参数是数组的序列(例如list、tuple)。它不把它们作为单独的参数。

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


得到这个特殊错误的原因是数组也是序列。但这意味着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

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

ValueError: 0-d arrays can't be concatenated

我花了一些时间才弄清楚,因为stackoverflow中的所有答案都假设您有两个numpy数组。 相当愚蠢但容易被忽视的错误。因此张贴只是为了以防万一这有助于某人。

下面是使用np.asarray转换现有python数组的链接 或 create np arrays,如果有帮助的话。

相关问题 更多 >