我正在尝试操作包含存储在其他数组中的数据的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
为什么?
答案 0 :(得分:3)
您误解了.all()方法的用法。 如果数组的所有元素都不是0,则会产生True。这在您的数组中或两者中都不是这种情况。
由于一个是另一个的两倍,它们肯定会给.all()方法提供相同的结果(True或者都是False)
按照评论中的要求进行修改: 要比较两个数组的内容,首先使用元素明智比较,并使用.all:
检查所有元素是否为True(fftMod == fft).all()
或者更好的花车,包括一定的公差:
np.allclose(fftMod, fft)