2016-10-31 21 views
0

配列をコピーしようとしていますが、コピー内のすべての値をしきい値以下に置き換えていますが、元の配列はそのままです。numpy配列の値を置き換える問題

ここでは、私が行う必要がある簡単な例を示します。

A = [ nan nan nan 0.3 0.4 0.5 0.6 0.7 0.8 0.9] 
B = [ nan nan nan 0.3 0.4 0.5 0.6 0.7 0.8 0.9] 

< = 0.3における値も上書きされ、なぜ私が理解することはできませんが生成さ

import numpy as np 

A = np.arange(0,1,.1) 
B = A 
B[B<.3] = np.nan 
print ('A =', A) 
print ('B =', B) 

誰かがこれを私に説明し、回避策を提案できますか?

+2

'B = A'はコピーではありません。 – user2357112

+2

'A'と' B'は同じオブジェクトを指しています。 – sytech

+1

一般に、Pythonでは、copy()(またはオブジェクト自体が参照を保持する場合はdeepcopy()を使用しない限り、=を使用するとオブジェクト自体ではなくオブジェクトへの参照がコピーされます)。これはメモリと時間を節約しますが、時には面倒です。 –

答えて

2

B = AからB = A.copy()に変更してください。これは期待どおりに動作します。書かれているように、BAはメモリ内の同じオブジェクトを参照します。