2014-04-16 27 views
0

我想用随机数乘以我的数组中的每个值。每次尝试迭代方法时,都会收到错误消息:'IndexError:index out of bounds'。 这里是我的代码:如何乘以随机数的数组

from physics import * 
N = 3.0 
x = ones(N) 

for i in x: 
    x[i] = i * uniform(10) 

numpy的存储在物理进口。

我已经这样做了,所以当我回来时,我可以通过更改N的值来轻松地更改我阵列中的人数。

回答

0

除非你有使用physics库,使用此代码:

>>> import random 
>>> array = [1]*random.randint(1, 10) 
>>> array 
[1, 1, 1, 1, 1] 
>>> for i, j in enumerate(array): 
...  array[i] = j*random.randint(1, 10) 
... 
>>> array 
[3, 7, 5, 1, 2] 
>>> 

您的代码不工作,因为你正在做的for i in x,这是分配给ix每个值。而应将for i in x更改为for i in range(0, len(x))for i in range(len(x))

+0

我的目标是基本上产生一个N项的数组,每个项都有一个随机数。当我使用len(x)函数时,它会将我的阵列恢复到正常范围。 我想避免使用随机直接生成这个数组,因为我对生成的随机数的控制较少 – user3538196

0

for-loopi始终为1。治疗i作为x指标,它应该range(len(x))产生[0, 1, ... N-1]

from physics import * 
N = 3.0 
x = ones(N) 

for i in range(len(x)): 
    x[i]=i*uniform(10) 

也将被替换,你可以重写为

import numpy as np 
x = np.random.uniform(0, 10, N) * np.arnage(N) 

其中0低,10是高,N是大小。

+0

当我将其更改为范围(LEN(X)),它使我的原数组变成数组(0,1,2)当我仍然希望它保持一样。 – user3538196

0

既然你已经有一个可变长度,它只是

N = 10  
x = numpy.ones(N) 
x *= numpy.random.uniform(10, size=N)