2016-06-21 8 views
0

2Dのboolean配列の値をTrueからFalseに変更する予定ですが、コードが機能しません。私は文b [r] [c] = Falseを使っても出力結果は同じです。誰かが私にこれを助けてくれました、ありがとう。2D配列の要素をPythonで変更する方法

答えて

3

要素を変更するには、bのインデックスを使用する必要があります。要素自体は変更しないでください。試してみてください:あなたが探しているもの

import numpy as np 

b = np.array([[True for j in range(5)] for i in range(5)]) 
print(b) 

for i, r in enumerate(b): 
    for j, c in enumerate(r): 
     b[i,j] = False 
print(b) 
+0

そして、それはBは注目に値します[I、J]どのようにnumpyが動作するかを考えると、少し効率的です。 – tschundler

+0

はい、そうです、私はb [i] [j]をb [i、j]に変更する答えを編集しました。 –

+0

はい、今動作します。ご協力いただきありがとうございます。 – user1304846

0

はこれです:

b[r, c] = False 

numpyの配列はnumpyののアクセスメソッドを使用して最適です。もう1つの方法は、配列のビューを作成し、ビューを変更することです。

編集:また、r、cは数字である必要がありますが、他の答えと同様に真/真ではありません。私は質問されていた以上のことを質問していました。

+0

これは完全には機能しません。 [[偽偽真真真] [真偽真真真] [偽偽真真真] [偽偽真真真] [偽偽真真真]] – user1304846

1

Numpyで放送を利用できます。 (forループせずにすべての要素に取り組んでいます。)

a =np.array([True]*25).reshape(5,5) 
b = a * False 
print(b) 

1に真と評価し、falseと評価さ0 はとても1 * 0があると... 0

+0

がこれは結果を参照してください。効率的な実装が行われる限り、私より優れた答えですが、OPは 'for'ループの中からリスト/配列を適切に編集する方法も理解する必要があります。 –

+0

私は、スタック上のその方向にnumpyやpandasなどのライブラリのforループを廃止する必要があると考えています。 (これは進歩しているので、私はカウンタの例を探しています) – Back2Basics

+0

numpyの配列を通常のリストに置き換えることができて、そのリストを 'for'で使用するコードを再フォーマットする必要がないことを知っています。ループ。速度が問題であれば、コードを再フォーマットすることができます。 –

関連する問題