Bin*_*hou 13 python arrays numpy concatenation
我试图连接两个numpy数组,但我得到了这个错误.有人能给我一些关于这实际意味着什么的线索吗?
Import numpy as np
allValues = np.arange(-1, 1, 0.5)
tmp = np.concatenate(allValues, np.array([30], float))
Run Code Online (Sandbox Code Playgroud)
然后我得到了
ValueError: 0-d arrays can't be concatenated
Run Code Online (Sandbox Code Playgroud)
如果我做
tmp = np.concatenate(allValues, np.array([50], float))
Run Code Online (Sandbox Code Playgroud)
没有错误消息,但tmp变量也不反映串联.
Rog*_*Fan 13
您需要将要连接的数组放入参数中的序列(通常是元组或列表)中.
tmp = np.concatenate((allValues, np.array([30], float)))
tmp = np.concatenate([allValues, np.array([30], float)])
Run Code Online (Sandbox Code Playgroud)
检查文档的np.concatenate.请注意,第一个参数是数组的序列(例如list,tuple).它并没有把他们作为独立参数.
据我所知,这个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
Run Code Online (Sandbox Code Playgroud)
还要确保连接两个numpy数组.我用一个numpy数组连接一个python数组,它给了我同样的错误:
ValueError: 0-d arrays can't be concatenated
Run Code Online (Sandbox Code Playgroud)
我花了一些时间才弄清楚这一点,因为stackoverflow中的所有答案都假设你有两个numpy数组.相当愚蠢但容易被忽视的错误.因此发布以防万一这有助于某人.
以下是使用np.asarray转换现有python数组 或 创建np数组的链接,如果有帮助的话.
| 归档时间: |
|
| 查看次数: |
30465 次 |
| 最近记录: |