2016-09-14 128 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給予同樣的結果到。所有()方法(既真或假兩者)

編輯作爲意見要求: 要比較在兩個數組的內容首先使用元素方式比較,檢查所有元素都與真。所有:

(fftMod == fft).all() 

或者,也許對於浮動更好,包括在一定的公差:

np.allclose(fftMod, fft) 
+0

因此,只需將.all()關閉'fftMod'和'fft',即可設置。 – benten

+2

不完全,你必須改變括號: '(fftMod == fft).all()' – dnalow

+0

@dnalow這是一個必須包含在你的答案中的要點。 –