2024-04-23 12:16:36 发布
网友
我在NumPy中有两个简单的一维数组。我应该可以使用numpy.concatenate连接它们。但是下面的代码有一个错误:
TypeError: only length-1 arrays can be converted to Python scalars
import numpy a = numpy.array([1, 2, 3]) b = numpy.array([5, 6]) numpy.concatenate(a, b)
为什么?
concatenate的第一个参数本身应该是要连接的数组序列:
concatenate
numpy.concatenate((a,b)) # Note the extra parentheses.
连接1D数组有多种可能性,例如
numpy.r_[a, a], numpy.stack([a, a]).reshape(-1), numpy.hstack([a, a]), numpy.concatenate([a, a])
所有这些选项对于大型数组都同样快速;对于小型数组,concatenate有一个轻微的边:
绘图是用perfplot创建的:
import numpy import perfplot perfplot.save( "o.png", setup=lambda n: numpy.random.rand(n), kernels=[ lambda a: numpy.r_[a, a], lambda a: numpy.stack([a, a]).reshape(-1), lambda a: numpy.hstack([a, a]), lambda a: numpy.concatenate([a, a]) ], labels=['r_', 'stack+reshape', 'hstack', 'concatenate'], n_range=[2**k for k in range(19)], xlabel='len(a)', logx=True, logy=True, )
行应该是:
numpy.concatenate([a,b])
要连接的数组需要作为序列传入,而不是作为单独的参数传入。
从NumPy documentation:
numpy.concatenate((a1, a2, ...), axis=0)Join a sequence of arrays together.
numpy.concatenate((a1, a2, ...), axis=0)
Join a sequence of arrays together.
它试图将您的b解释为axis参数,这就是为什么它抱怨无法将其转换为标量。
b
concatenate
的第一个参数本身应该是要连接的数组序列:连接1D数组有多种可能性,例如
所有这些选项对于大型数组都同样快速;对于小型数组,
concatenate
有一个轻微的边:绘图是用perfplot创建的:
行应该是:
要连接的数组需要作为序列传入,而不是作为单独的参数传入。
从NumPy documentation:
它试图将您的
b
解释为axis参数,这就是为什么它抱怨无法将其转换为标量。相关问题 更多 >
编程相关推荐