2017-07-25 7 views
0

列のすべての要素がしきい値より大きいnumpy配列の列インデックスを探したいとします。上記の場合numpyすべての要素がしきい値より大きい列インデックスを取得する

例えば、

X = array([[ 0.16, 0.40, 0.61, 0.48, 0.20], 
      [ 0.42, 0.79, 0.64, 0.54, 0.52], 
      [ 0.64, 0.64, 0.24, 0.63, 0.43], 
      [ 0.33, 0.54, 0.61, 0.43, 0.29], 
      [ 0.25, 0.56, 0.42, 0.69, 0.62]]) 

閾値が0.4である場合、私の結果は1,3であるべきです。

答えて

4

あなたはnp.whereを使用して、各列のminと比較することができます:リスト内包を使用して

large = np.where(X.min(0) >= 0.4)[0] 
0

汎用ソリューション

threshold = 0.4 
rows_nb, col_nb = shape(X) 
rows_above_threshold = [col for col in range(col_nb) \ 
    if all([X[row][col] >= threshold for row in range(rows_nb)])] 
0
x = array([[ 0.16, 0.40, 0.61, 0.48, 0.20], 
     [ 0.42, 0.79, 0.64, 0.54, 0.52], 
     [ 0.64, 0.64, 0.24, 0.63, 0.43], 
     [ 0.33, 0.54, 0.61, 0.43, 0.29], 
     [ 0.25, 0.56, 0.42, 0.69, 0.62]]) 

threshold = 0.3 
size = numpy.shape(x)[0] 
for it in range(size): 
    y = x[it] > threshold 
    print(y.all()) 

plsは試してみてください。

関連する問題