2017-07-11 8 views
3

私はベクトル化を使用してnumpy配列のすべての要素を5で割り切れる方法は?

test = np.array([1,5,12,15,20,22]) 

を持っている場合、私はたとえば5

で割り切れるnumpyの配列のすべての要素を合計するためのベクトル化方法を探しています、私は私が知っている40を返すようにしたいですnp.sumメソッドですが、X%5 == 0の条件付きでベクトル化を使用してこれを行う方法はありますか?

答えて

6

私たちは、それらの要素を選択するためにboolean-indexingのために試合のmaskを使用して、単純にそうように、それらを合計することができます -

test[test%5==0].sum() 

サンプルステップ・バイ・ステップの実行 -

# Input array 
In [48]: test 
Out[48]: array([ 1, 5, 12, 15, 20, 22]) 

# Mask of matches 
In [49]: test%5==0 
Out[49]: array([False, True, False, True, True, False], dtype=bool) 

# Select matching elements off input 
In [50]: test[test%5==0] 
Out[50]: array([ 5, 15, 20]) 

# Finally sum those elements 
In [51]: test[test%5==0].sum() 
Out[51]: 40 
関連する問題