如何用随机数乘以数组

时间:2014-04-16 00:50:13

标签: python arrays random

我试图将我的数组中的每个值乘以一个随机数。每次我尝试迭代方法时,都会收到错误消息:' 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的值来轻松更改数组中的数量。

3 个答案:

答案 0 :(得分:0)

i中的{p> for-loop始终为1.将i视为x的索引,应将其替换为生成range(len(x))的{​​{1}} }

[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为大小。

答案 1 :(得分: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,即为i的每个值分配x。相反,请将for i in x更改为for i in range(0, len(x))for i in range(len(x))

答案 2 :(得分:0)

由于你已经拥有变量中的长度,所以它只是

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