Python 在不更改原始数组的情况下操作复制的numpy数组
我试图操纵一个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()
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这是您的答案中应该包含的要点。