python - numpy 数组连接错误 : 0-d arrays can't be concatenated

标签 python arrays numpy concatenation

我正在尝试连接两个 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都采用一个主要参数,该参数应该是一些数组序列。


您收到该特定错误的原因是数组也是序列。但这意味着 concatenateallValues 解释为要连接的数组序列。但是,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/

相关文章:

python - 从 numpy 数组获取范围/切片另一个数组的大小

ios - 我可以返回两个数组吗?

java:25: '.class' 合并数组时出现预期错误

Python 导入带有多个分隔符的数据

python - 将单位添加到 MatPlotLib 中的 yaxis 标签

javascript - 如何替换对象内部的属性名称? JavaScript

python - 内置范围或 numpy.arange : which is more efficient?

python - 仅从 100 多个项目的 mysql 数据库输出中选择 (1) 随机选择

python - 根据函数的输入交错列表

jquery - 同时使用 jQuery 和 FormEncode 验证表单而不重复