Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在不更改原始数组的情况下操作复制的numpy数组_Python_Arrays_Numpy - Fatal编程技术网

Python 在不更改原始数组的情况下操作复制的numpy数组

Python 在不更改原始数组的情况下操作复制的numpy数组,python,arrays,numpy,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()

我试图操纵一个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

为什么?

您误解了.all()方法的用法。 如果数组的所有元素都不是0,则该值为True。在两个数组中都是这样,或者两个数组都不是这样

因为一个是另一个的两倍,所以它们肯定会给.all()方法提供相同的结果(True或False)

根据评论中的要求进行编辑: 要比较这两个数组的内容,请首先使用元素比较,并检查所有元素是否为True with.all:

(fftMod == fft).all()
或者,对于包含一定公差的浮动,可能更好:

np.allclose(fftMod, fft)

您误解了.all()方法的用法。 如果数组的所有元素都不是0,则该值为True。在两个数组中都是这样,或者两个数组都不是这样

因为一个是另一个的两倍,所以它们肯定会给.all()方法提供相同的结果(True或False)

根据评论中的要求进行编辑: 要比较这两个数组的内容,请首先使用元素比较,并检查所有元素是否为True with.all:

(fftMod == fft).all()
或者,对于包含一定公差的浮动,可能更好:

np.allclose(fftMod, fft)

所以只要把.all()去掉
fftMod
fft
就可以了。不完全,你必须改变括号:
(fftMod==fft)。all()
@dnalow这是你的答案中应该包含的一个要点。所以只要把.all()去掉
fftMod
fft
就可以了。不完全,您必须更改括号:
(fftMod==fft).all()
@dnalow这是您的答案中应该包含的要点。