列表理解&错误:只有length-1数组可以转换为Python标量

时间:2014-08-04 12:14:53

标签: python arrays loops numpy

我正在尝试在x的值之间创建大小相等的样本,其中x的值大于或等于0.45:

x
array([ 0.  ,  0.05,  0.1 ,  0.15,  0.2 ,  0.25,  0.3 ,  0.35,  0.4 ,
        0.45,  0.5 ,  0.55,  0.6 ,  0.65,  0.7 ,  0.75,  0.8 ,  0.85,
        0.9 ,  0.95])

x2=x[x>=0.45]

sample=np.array([np.arange(0,x2[i],x2[i]*0.1) for i in xrange(x2)])

sample=[]
for i in xrange(x2):
     sample.append(np.arange(0.0,x2[i],x2[i]*0.1))

但我每次都会收到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: only length-1 arrays can be converted to Python scalars

当我尝试使用x的单个值时,即对于循环的一个实例,它可以工作。似乎Python只期望在&#39; sample&#39;而不是一堆数组。不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

首先,我猜你可以使用numpy内置的东西(即np.linspace或类似的东西)解决任务。

其次,你的实际问题是电话

xrange(x2)

xrange需要一个整数,因此numpy尝试转换x2,因为它是一个不起作用的数组。我想你想写

xrange(len(x2))