2016-10-31 3 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 = AB = A.copy()으로 변경하면 예상대로 작동합니다. 서면에 따르면 BA은 메모리의 동일한 개체를 나타냅니다.