2014-04-16 53 views
0

我想用隨機數乘以我的數組中的每個值。每次嘗試迭代方法時,都會收到錯誤消息:'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

除非你有使用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,這是分配給ix每個值。而應將for i in x更改爲for i in range(0, len(x))for i in range(len(x))

+0

我的目標是基本上產生一個N項的數組,每個項都有一個隨機數。當我使用len(x)函數時,它會將我的陣列恢復到正常範圍。 我想避免使用隨機直接生成這個數組,因爲我對生成的隨機數的控制較少 – user3538196

0

for-loopi始終爲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是大小。

+0

當我將其更改爲範圍(LEN(X)),它使我的原數組變成數組(0,1,2)當我仍然希望它保持一樣。 – user3538196

0

既然你已經有一個可變長度,它只是

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