2016-05-10 3 views
0

私は連続した浮動小数点データを持っています(-257.2から154.98まで)。 どのように分散されているのかわかりません。しかし、私はそれがビンにあることを望むでしょう - -270から-201、-200から-141、-140から-71、-70から-1,0から69,70から139,140から209Python連続データをカテゴリに変換する

が、これは具体的に、私はを探しています?、実行する方法があります:私は明らかに手動ですべての数字を反復処理することによってこれを行うことができます

data = np.random.rand(10) 
data 
array([ 0.58791019, 0.2385624 , 0.70927668, 0.22916244, 0.87479326, 
     0.49609703, 0.3758358 , 0.35743165, 0.30816457, 0.2018548 ]) 
def GenRangedData(data, min, max, step): 
    #some code 
    no_of_bins = (max - min)/ step 
    bins = [] 
    #some code 
    return bins 

rd = GenRangedData(data, 0, 1, 0.1) 
# should generate: 
rd 
[[], [0.2385624, 0.22916244, 0.2018548], [0.3758358, 0.35743165, 0.30816457], [0.49609703], [0.58791019], [], [0.70927668], [0.87479326]] 

は、私はそれを自動化するために探しています、最小最大となるようステップはたくさん実験することができます。これを効率的に行う方法はありますか?

+0

ないあなたがしているのかわからPL更新/編集、これが最善の方法である場合、私は知らない、私が思い付くことができるものである 尋ねるだから、 'data'をループして、' GenRangedDate() 'の中の対応するbinに各項目を割り当てたいとは思わないでしょうか?もしそうでなければ、あなたは何を達成したいと思いますか? – yelsayed

+0

これを行うライブラリ関数を探していますが、自分でリストを反復するのは効率的ではないようです。 – Adorn

+0

これは 'O(n)'演算ですが、組み込み関数はこれを高速化できません。 。 – yelsayed

答えて

0

あなたはこれをより速く行うことができると思うならこれは

def GenRangedData(data, min, max, step): 
    cat_data = [] 
    bins = ((i_max - i_min)/step) + 2 
    for x in range(0, len(data)): 
     temp_data = [] 
     for y in range(0, len(data[x])): 
      for n in range(0, int(bins)): 
       if data[x][y] < (i_min + (n*step)): 
        temp_data.append(n) 
        break 
    cat_data.append(temp_data) 
関連する問題