いくつかのブール値ステートメントで結果を再インデックスし、y
に対応する要素を0
に設定しようとしています。このインデックススキームをテストするために使用しているダミーコードを以下に示します。インデックス配列のインデックス作成時のNumpy配列の設定値
x=np.zeros([5,4])+0.1;
y=x;
print(x)
m=np.array([0,2,3]);
y[0:4,m][y[0:4,m]<0.5]=0;
print(y)
なぜ動作しないのか分かりません。出力は、私がしたい:
[[ 0.1 0.1 0.1 0.1]
[ 0.1 0.1 0.1 0.1]
[ 0.1 0.1 0.1 0.1]
[ 0.1 0.1 0.1 0.1]
[ 0.1 0.1 0.1 0.1]]
[[ 0. 0.1 0. 0. ]
[ 0. 0.1 0. 0. ]
[ 0. 0.1 0. 0. ]
[ 0. 0.1 0. 0. ]
[ 0.1 0.1 0.1 0.1]]
しかし、私は実際に何を得る:
[[ 0.1 0.1 0.1 0.1]
[ 0.1 0.1 0.1 0.1]
[ 0.1 0.1 0.1 0.1]
[ 0.1 0.1 0.1 0.1]
[ 0.1 0.1 0.1 0.1]]
[[ 0.1 0.1 0.1 0.1]
[ 0.1 0.1 0.1 0.1]
[ 0.1 0.1 0.1 0.1]
[ 0.1 0.1 0.1 0.1]
[ 0.1 0.1 0.1 0.1]]
私はこれが動作しない理由を説明するいくつかのボンネット下の詳細を欠けていると確信しています。面白いことに、m
を:
に置き換えると、割り当てが機能します。何らかの理由で列のサブセットを選択しても、ゼロを割り当てることはできません。
私の実際のy
が本当に巨大になるので、誰かが何が起こっているのかを説明して、代わりの解決策を見つけることができれば(うまくいけば、一時的なnumpyアレイを生成することはできません)ありがとうございました!
EDIT: y[0:4,:][y[0:4,:]<0.5]=0;
y[0:4,0:3][y[0:4,0:3]<0.5]=0;
など
期待通りにすべての作業。問題は、あなたが何らかの種類のリストでインデックスを作成するときです。
「0.1」の代わりに乱数を使用してもいいですか?入力として 'np.random.rand(5,4)'のようなものを使用して、期待される出力を見せてください。 – Divakar
私が当初問題を遭遇したすべての乱数で元々テストしました。もっと再現性があったからといって、すべて「0.1」に切り替えました。 –
最初に 'np.random.seed(1234)'を使って、再現可能な乱数を得ることができます。 – Divakar