2016-10-03 10 views
1

2次元配列データを持っています。そして、j回目の反復が1になるたびに、集計を達成したいと思います。 ここでi =行とj =列です。 forループなしでこれを行うにはどうすればいいですか?このような2次元配列の列の集計を取得します。

概念的には何か:私はあなたが両方とも、行と列を反復し、あるデータ内の各エントリのためにamountに1を追加したいようにこの質問をinterprete

for r in range(row): 
    if(data[r][j] == 1) 
     amount += 1 

答えて

1

あなたは次のように行うことができます。

import numpy as np 
a = np.array([[0, 1], [1, 1]]) 
j = 1 
np.sum(a[:, j] == 1) 

は、としてあなたに2を与えます結果は であり、np.sum(a[:, 0] == 1)は1になります。

as mentioあなたがnp.logical_and(condition1, condition2)を使用することができ、あなたが複数のアレイ上の条件を使用したいあなたのコメントで定義さ:

np.sum(np.logical_and(a[:, 0] == 1, b[:, 0] == 2)) 
+0

第2の条件を含めることは可能ですか?例えば、np.sum(arrayB = 2とa [:, 0] == 1) – user

+0

@user np.logical_and(a [:, 0] == 1、b [:, 0] == 1)を使用することができます。 2) –

0

1.これが可能次のようにループすることなく実行されます。

import numpy as np 

data = np.ones((6,8)) 
amount = data[data == 1].sum() 
print amount 

instaead場合、あなたは1列jを修正し、これだけの列に金額をしたい:

import numpy as np 
j=7 
data = np.ones((6,8)) 
amount = data[:,j][data[:,j]==1].sum() 
print amount 
+0

私は特定の列jの各行を反復処理します。 – user