npの2次元配列の要素値の変更に関する質問があります。ここでは、例を持っている:python np array forループの要素値を変更します
a=np.arange(10).reshape(2,5)
for i in a: # go through the rows of array
i=np.array([0,0,0,0,0])
print a
戻り値は、元の配列には変化がないことを意味
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
あります。 forループのiが配列aの各行のコピーであることを意味しますか?私がコピーであれば、コピーの変更が元の値に影響しないので意味があります。しかし、私は次のコードを試してください:[:]私はコピーである場合は、ここで働くことができる
a=np.arange(10).reshape(2,5)
for i in a: # go through the rows of array
i[:]=np.array([0,0,0,0,0])
print a
をリターン結果は、私はなぜ私が理解don'y
array([[0, 0, 0, 0, 0],
0, 0, 0, 0, 0]])
です。この質問が重複する場合は、リンクを提供してください。おかげさまで
お返事ありがとうございます。_インプレイス_変更の意味はどうですか?私はaの要素への参照を保持することに同意します。つまり、iとaは同じメモリアドレスを持ちます。 forループに 'i = np.array([0,0,0,0,0])'を代入すると、iとnp.array([0,0,0,0,0])に同じメモリアドレス、次にiとaは同じメモリアドレスを持っていません。だから私の修正はaに影響しません。そうですか? –
インデックス 'x'の値を変更するために' a [x] = 1'を行うのと同じように、リストをカバーするスライスを使ってリスト全体を同じように(同じオブジェクトを意味する) [:] = [...] '。はい、私は正しく言うでしょう –