我正在尝试连接两个 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 变量也没有反射(reflect)串联。
最佳答案
您需要将要连接的数组放入参数中的序列(通常是元组或列表)。
tmp = np.concatenate((allValues, np.array([30], float)))
tmp = np.concatenate([allValues, np.array([30], float)])
检查 documentation对于 np.concatenate
。请注意,第一个参数是数组的序列(例如列表、元组)。它不会将它们作为单独的参数。
据我所知,这个 API 被所有 numpy 的连接函数共享:concatenate
, hstack
, vstack
, dstack
, 和 column_stack
都采用一个主要参数,该参数应该是一些数组序列。
您收到该特定错误的原因是数组也是序列。但这意味着 concatenate
将 allValues
解释为要连接的数组序列。但是,allValues
的每个元素都是 float 而不是数组,因此被解释为零维数组。如错误所述,这些“数组”无法连接。
第二个参数作为 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
关于python - numpy 数组连接错误 : 0-d arrays can't be concatenated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25453173/