操作复制的numpy数组而不更改原始数据

时间:2016-09-14 12:08:10

标签: python arrays 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

为什么?

1 个答案:

答案 0 :(得分:3)

您误解了.all()方法的用法。 如果数组的所有元素都不是0,则会产生True。这在您的数组中或两者中都不是这种情况。

由于一个是另一个的两倍,它们肯定会给.all()方法提供相同的结果(True或者都是False)

按照评论中的要求进行修改: 要比较两个数组的内容,首先使用元素明智比较,并使用.all:

检查所有元素是否为True
(fftMod == fft).all()

或者更好的花车,包括一定的公差:

np.allclose(fftMod, fft)