2016-09-14 2 views
0

다른 배열에 저장된 데이터가 포함 된 numpy 배열을 조작하려고합니다. 지금까지 배열에서 값을 변경하면 두 배열에서 모두 값이 변경됩니다.원본을 변경하지 않고 복사 된 numpy 배열 조작

import numpy as np 
from astropy.io import fits 

image = fits.getdata("randomImage.fits") 
fft = np.fft.fft2(image) 
fftMod = np.copy(fft) 
fftMod = fftMod*2 
if fftMod.all()== fft.all(): 
    print "shit same same same " 

-- > shit same same same 

왜입니까?

답변

3

.all() 메서드의 사용법을 잘못 이해했습니다. 배열의 모든 요소가 0이 아닌 경우 True를 반환합니다. 이는 배열에서나 둘 다에서 발생하는 것 같습니다. 는 비교하려면 : 코멘트에 요청한 일 이후

가 다른 이중, 그들은의 definetly)합니다 (.ALL에 (True 또는 모두 거짓 둘 다)

편집 방법을 동일한 결과를 제공 양쪽 배열의 내용은 첫 번째 요소 현명한 비교를 사용하여 모든 요소 일 모두에 해당하는지 확인하십시오

(fftMod == fft).all() 

또는 특정 허용 오차를 포함 수레 어쩌면 더 나은 :

np.allclose(fftMod, fft) 
+0

그래서 .all()을'fftMod' 및'fft'에서 제외하면 설정됩니다. – benten

+2

아닙니다. 괄호를 변경해야합니다 : '(fftMod == fft) .all()' – dnalow

+0

@dnalow 그것은 답변에 포함되어야하는 필수 요소입니다. –