Sebastiano1991
Sebastiano1991

Reputation: 897

Manipulating copied numpy array without changing the original

I am trying to manipulate a numpy array that contains data stored in an other array. So far, when I change a value in my array, both of the arrays get values changed:

 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

Why is?

Upvotes: 0

Views: 874

Answers (1)

dnalow
dnalow

Reputation: 984

You misunderstood the usage of the .all() method. It yields True if all elements of an array are not 0. This seems to be the case in both your arrays or in neither of them.

Since one is the double of the other, they definetly give the same result to the .all() method (both True or both False)

edit as requested in the comments: To compare the content of the both arrays use element wise comparison first and check that all elements are True with .all:

(fftMod == fft).all()

Or maybe better for floats including a certain tolerance:

np.allclose(fftMod, fft)

Upvotes: 3

Related Questions