2016-09-14 132 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这是一个必须包含在你的答案中的要点。 –