[英]How to multiply array of ones by random numbers
我試圖將我的數組中的每個值乘以隨機數。 每次嘗試迭代方法時,都會出現一條錯誤消息:“ IndexError:索引超出范圍。” 這是我的代碼:
from physics import *
N = 3.0
x = ones(N)
for i in x:
x[i] = i * uniform(10)
塊體存儲在物理導入中。
我這樣做是為了讓我回來時可以很容易地通過更改N
值來更改數組中的個數。
i
在for-loop
始終為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
為大小。
除非必須使用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 x
for i in range(0, len(x))
for i in range(len(x))
或for i in range(len(x))
。
由於您已經有一個變量的長度,因此
N = 10
x = numpy.ones(N)
x *= numpy.random.uniform(10, size=N)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.