weird problem with subtracting ndarrays
Hello, I've got two arrays of the same shape that I read in from a file, and I'm trying to difference them. Very simple stuff, but I'm getting weird answers. Here is the code:
counts1 = hfile1.read_grid_field("CFbA", "TerrainReferencedRCCMFraction_Num") counts2 = hfile2.read_grid_field("CFbA", "TerrainReferencedRCCMFraction_Num") counts1.max(), counts2.max() (13, 13) counts1.min(), counts2.min() (0, 0) numpy.all(counts1 == counts2) False diff = counts1 - counts2 diff.max() 4294967295 !! WHAT IS HAPPENING HERE ?? sum = counts1 + counts2 sum.max() 26
As you can see, the range of values in both arrays is 0 to 13, and the sum behaves normally, but the difference gives this weird number. When I create dummy arrays, the subtraction works fine. So there must be some funny value lurking in either the counts1 or counts2 array, but the numpy.isnan() test returns False. Any ideas for how I debug this? Catherine
On Wed, Jun 12, 2013 at 3:25 PM, Moroney, Catherine M (398D) < Catherine.M.Moroney@jpl.nasa.gov> wrote:
Hello,
I've got two arrays of the same shape that I read in from a file, and I'm trying to difference them. Very simple stuff, but I'm getting weird answers.
Here is the code:
counts1 = hfile1.read_grid_field("CFbA", "TerrainReferencedRCCMFraction_Num") counts2 = hfile2.read_grid_field("CFbA", "TerrainReferencedRCCMFraction_Num") counts1.max(), counts2.max() (13, 13) counts1.min(), counts2.min() (0, 0) numpy.all(counts1 == counts2) False diff = counts1 - counts2 diff.max() 4294967295 !! WHAT IS HAPPENING HERE ?? sum = counts1 + counts2 sum.max() 26
As you can see, the range of values in both arrays is 0 to 13, and the sum behaves normally, but the difference gives this weird number.
When I create dummy arrays, the subtraction works fine. So there must be some funny value lurking in either the counts1 or counts2 array, but the numpy.isnan() test returns False.
Any ideas for how I debug this?
Catherine
Check the dtype of the arrays. They are probably unsigned integers, and the subtraction leads to wrap-around in some cases. For example: In [1]: x = np.array([0, 1, 2], dtype=np.uint32) In [2]: y = np.array([1, 1, 1], dtype=np.uint32) In [3]: x - y Out[3]: array([4294967295, 0, 1], dtype=uint32) Warren
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
On Wed, Jun 12, 2013 at 3:25 PM, Moroney, Catherine M (398D) <Catherine.M.Moroney@jpl.nasa.gov> wrote:
Hello,
I've got two arrays of the same shape that I read in from a file, and I'm trying to difference them. Very simple stuff, but I'm getting weird answers.
Here is the code:
counts1 = hfile1.read_grid_field("CFbA", "TerrainReferencedRCCMFraction_Num") counts2 = hfile2.read_grid_field("CFbA", "TerrainReferencedRCCMFraction_Num") counts1.max(), counts2.max() (13, 13) counts1.min(), counts2.min() (0, 0) numpy.all(counts1 == counts2) False diff = counts1 - counts2 diff.max() 4294967295 !! WHAT IS HAPPENING HERE ?? sum = counts1 + counts2 sum.max() 26
As you can see, the range of values in both arrays is 0 to 13, and the sum behaves normally, but the difference gives this weird number.
When I create dummy arrays, the subtraction works fine. So there must be some funny value lurking in either the counts1 or counts2 array, but the numpy.isnan() test returns False.
Any ideas for how I debug this?
check the dtype of the count variables, may be uint diff =1 * counts1 - counts2 Josef
Catherine
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
participants (3)
-
josef.pktd@gmail.com
-
Moroney, Catherine M (398D)
-
Warren Weckesser