2017-02-20 4 views
0

数値をランダムに生成するためにnumpy randomを使用するとき、複数の繰り返しで値を選択する方法を知りたいのですが。 私は次のことをやっている:numpy randomを使用する場合、複数回繰り返す値を選択しますか?

1)まず1-10

ran = ceil(np.random.random(10)*10) 
print ran 
[ 2. 9. 8. 9. 10. 8. 10. 7. 1. 1.] 

2の間の数字を生成する)今、2番目の列は周波数である周波数テーブル を取得するためにscipy.statsからitemfreqを使用して。

freq_tmp = itemfreq(ran) 
print freq_tmp 
[[ 1. 2.] 
[ 2. 1.] 
[ 7. 1.] 
[ 8. 2.] 
[ 9. 2.] 
[ 10. 2.]] 

print freq_tmp[0:][:,1] 

[ 2. 1. 1. 2. 2. 2.] 

が、これは私の周波数のみを示すが、私は1回の以上の繰り返しで値を知りたいのですが、この例では次のようになります。

[1. 8. 9. 10] 

はあなたの助けをありがとう!

+0

'' 'freq_tmpの[:0] [freq_tmpを[ :、1]> 1] '' ' – wwii

答えて

1

あなたはほとんどそこにいます。あなたはそうのようにスライサーで>を置くことができます。

import numpy as np 

a = np.array([[1,2],[2,1],[7,1],[8,2],[9,2],[10,2]]) 

print(a[a[:,1] > 1][:,0]) 

出力:

[ 1 8 9 10] 
1

別のnumpyの解決策:

In [57]: ran=randint(1,11,10) 

In [58]: ran 
Out[58]: array([3, 4, 6, 1, 9, 4, 2, 8, 6, 8]) 

In [59]: uniqs,cnts=np.unique(ran,return_counts=True) 

In [60]: uniqs,cnts 
Out[60]: (array([1, 2, 3, 4, 6, 8, 9]), array([1, 1, 1, 2, 2, 2, 1], dtype=int64)) 

In [61]: uniqs[cnts>=2] 
Out[61]: array([4, 6, 8]) 
関連する問題