簡體   English   中英

如何將一個數組乘以隨機數

[英]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值來更改數組中的個數。

ifor-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM