2017-04-21 19 views
0

私はこの統計的な宿題を持っていました。私はpythonとnumpyでそれをやりたかったのです。 質問は、正規分布に従う1000個のランダムサンプルの作成から始まりました。 random_sample=np.random.randn(1000)
次に、これらの数値をいくつかのサブグループに分けたかったのです。たとえば、5つのサブグループに分割するとします。最初のサブグループは(-5、-3)の範囲の乱数で、最後のサブグループ(3,5)に移動します。 numpy(または他の何か)を使用してそれを行うにはどうしますか? それが可能ならば、サブグループの数が変更されたときに動作させたいです。pythonを使ってランダムサンプルをサブグループに分ける

答えて

0

あなたは​​を使用してサブグループのインデックスを取得することができます。

random_sample = 5 * np.random.randn(10) 
random_sample 
# -> array([-3.99645573, 0.44242061, 8.65191515, -1.62643622, 1.40187879, 
#   5.31503683, -4.73614766, 2.00544974, -6.35537813, -7.2970433 ]) 
indices = np.digitize(random_sample, (-3,-1,1,3)) 
indices 
# -> array([0, 2, 4, 1, 3, 4, 0, 3, 0, 0]) 
0

あなたrandom_sampleを並べ替える場合は、あなたが「ブレークポイント」の値—値、ユーザーが定義した範囲に最も近いのインデックスを見つけることによって、この配列を分割することができます-3、-5のようになります。コードは次のようなものになるだろう。今

import numpy as np 
my_range = [-5,-3,-1,1,3,5] # example of ranges 
random_sample = np.random.randn(1000) 
hist = np.sort(random_sample) 
# argmin() will find index where absolute difference is closest to zero 
idx = [np.abs(hist-i).argmin() for i in my_range] 
groups=[hist[idx[i]:idx[i+1]] for i in range(len(idx)-1)] 

groups各要素は、あなたの定義された範囲内のすべてのランダムな値を持つ配列であるリストです。

関連する問題