如何将全一数组与随机数相乘

0 投票
3 回答
2361 浏览
提问于 2025-04-18 02:53

我想把我数组里的每个1都乘上一个随机数。每次我用循环的方法去做的时候,都会出现一个错误,提示说:'IndexError: index out of bounds.'

这是我的代码:

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

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

Numpy这个库是从物理模块里导入的。

我这样做是为了方便,以后我想改变数组里1的数量时,只需要改一下N的值就可以了。

3 个回答

0

因为你已经把长度存储在一个变量里了,所以只需要这样做:

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

for循环中,i的值总是1。如果想把i当作x的索引,就应该用range(len(x))来替代,这样可以生成一个从0到N-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是上限,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,这会把 i 赋值为 x 中的每一个值。你应该把 for i in x 改成 for i in range(0, len(x)) 或者 for i in range(len(x))

撰写回答