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