2016-10-31 5 views
0

スクリプトに何か問題があり、エラーが見つかりましたが、完全に固まっています。pythonのインデックス作成と行ndarrayによって割り当て

2つの要素を含む配列Bが存在する:

b = np.zeros ((1,2)) 

b[0,0] = 272 
b[0,1] = 1578 

I値よりも大きい第2列の要素が存在するかどうかを確認し、そうであれば、その値はゼロを割り当てます。

コマンド

b[ b[:,1] >= 1000 ] = 0 

私が何をしないのです0の代わりに、b[0,1]

に両方の要素を変更しますか?事前に

おかげ

C

答えて

0

私が正しく理解していれば、2番目の列を0に設定したいだけです(値が1000より大きい場合)。私は、少なくとも2つの行を持っているあなたの例を拡張しますが、一つだけでも動作するようにそれをテスト:

b = np.array([[123, 456], 
       [789, 101112]]) 
mask = b[:,1] > 1000 
b[mask,1] = 0 

print b 

私はそれをよりよく説明することmaskを定義した - あなたはそれを置き換えることができます maskは、その後とブールベクトルです。各行に1つの要素、この場合は[False, True]。最後のステップでは、maskを使用して、選択された行をマスクし、最初の列要素にゼロを割り当てます。

+0

はい、2番目の列の要素を値よりも大きい場合は0に設定します。 1000よりも大きい ありがとう! – Christoph

0

私はあなたがB以上のループができたと思いますか?

b_rows = 1 #number of your rows 
for i in range(b_rows): 
    if b[i,1] >= 1000: 
     b[i,1]=0 
関連する問題