2016-06-18 6 views
2

forループによって生成されたすべての要素を含む配列を生成します。 NumPyのマニュアルやstackoverflowに関連するものや役に立つものは見つかりませんでした。これはコードの問題な部分です。forループによって生成された要素を配列に追加する

import numpy as np 

for i in range(0,26): 
    d = np.random.uniform(i,i+1.75) 
    empty = np.array([]) 
    all = np.append(empty, d) 
    print all 

私が試してみました、両方のは、それらの両方は、わずか25個のアレイを印刷するだけall最後に保存し、追加し、連結します。

ご協力いただきますようお願い申し上げます。

答えて

1

モーセの答えは正常に動作します@これをnumpyで直接行うことができます。 np.random.uniformは、sizeパラメータもとります。 See documentation。ここでのトリックはnp.random.uniform(0, 1.75) + 1np.random.uniform(1, 2.75)

二行目は、あなたのループ内のインデックスを考慮するためであると同じであることを実現することである

all = np.random.uniform(0, 1.75, size=(26,)) 
all += np.arange(26) 

:あなたのコードでは、そのために単純化することができます。結果は次のようになります。

array([ 0.82259558, 1.07737171, 3.56331306, 3.44506941, 
     5.36435903, 6.43062515, 7.4293016 , 8.62581585, 
     9.64664137, 10.11875821, 10.04800508, 12.03356491, 
     13.16818327, 14.12761814, 15.09009053, 15.96770449, 
     17.0981378 , 17.47152708, 18.15557107, 20.13834956, 
     21.22972932, 22.15797838, 22.97552168, 23.09385798, 
     24.17160732, 25.07440533]) 

このソリューションは、周りにあなたの頭をラップするために少し難しくなるかもしれませんが、あなたは、より複雑な計算をしたいときには、非常に強力なパターンです。あなたがそれを理解していないか教えてください。また、@モーゼスの解決策も正しいです!

1

以前に書き込まれた値が上書きされないようすることができますので、あなたのallは、ループの外に配置する必要があり、その値が更新され、emptyで新しいAPPENDに再割り当てないでする必要があります、

import numpy as np 

all = np.array([]) 
for i in range(0,26): 
    d = np.random.uniform(i,i+1.75) 
    all = np.append(all, d) 
    print all 
+0

@nikjohnまた、 'print all'をループの外側に置くべきです –

関連する問題