Skip to content

Incorrect behavior of np.testing.assert_array_almost_equal on linux, windows #11121

Closed

Description

@taldcroft

I get the following unexpected exception / test failure on linux (CentOS-6) and Windows but not on Mac. This was driven by a CI failure that showed up for linux / windows but no on my local Mac version.

In [62]: c = np.ma.MaskedArray([3.4, 4.1, 6.3], mask=[False, True, False])

In [63]: np.testing.assert_array_almost_equal(c[:2], [3.4, np.nan])

In [64]: np.testing.assert_array_almost_equal(c, [3.4, np.nan, 6.3])
/export/tom/anaconda/envs/astropy/lib/python3.6/site-packages/numpy/core/arrayprint.py:686: UserWarning: Warning: converting a masked element to nan.
  s = self.format % x
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/export/tom/anaconda/envs/astropy/lib/python3.6/site-packages/numpy/testing/utils.py in assert_array_compare(comparison, x, y, err_msg, verbose, header, precision, equal_nan, equal_inf)
    760 
--> 761         val = comparison(x, y)
    762 

/export/tom/anaconda/envs/astropy/lib/python3.6/site-packages/numpy/testing/utils.py in compare(x, y)
    952         y = array(y, dtype=dtype, copy=False, subok=True)
--> 953         z = abs(x - y)
    954 

/export/tom/anaconda/envs/astropy/lib/python3.6/site-packages/numpy/ma/core.py in __sub__(self, other)
   4078             return NotImplemented
-> 4079         return subtract(self, other)
   4080 

/export/tom/anaconda/envs/astropy/lib/python3.6/site-packages/numpy/ma/core.py in __call__(self, a, b, *args, **kwargs)
   1045             np.seterr(divide='ignore', invalid='ignore')
-> 1046             result = self.f(da, db, *args, **kwargs)
   1047         # Get the mask for the result

ValueError: operands could not be broadcast together with shapes (3,) (2,) 

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
<ipython-input-64-2c7b42e22a4d> in <module>()
----> 1 np.testing.assert_array_almost_equal(c, [3.4, np.nan, 6.3])

/export/tom/anaconda/envs/astropy/lib/python3.6/site-packages/numpy/testing/utils.py in assert_array_almost_equal(x, y, decimal, err_msg, verbose)
    960     assert_array_compare(compare, x, y, err_msg=err_msg, verbose=verbose,
    961              header=('Arrays are not almost equal to %d decimals' % decimal),
--> 962              precision=decimal)
    963 
    964 

/export/tom/anaconda/envs/astropy/lib/python3.6/site-packages/numpy/testing/utils.py in assert_array_compare(comparison, x, y, err_msg, verbose, header, precision, equal_nan, equal_inf)
    784         msg = build_err_msg([x, y], err_msg, verbose=verbose, header=header,
    785                             names=('x', 'y'), precision=precision)
--> 786         raise ValueError(msg)
    787 
    788 

ValueError: 
error during assertion:

Traceback (most recent call last):
  File "/export/tom/anaconda/envs/astropy/lib/python3.6/site-packages/numpy/testing/utils.py", line 761, in assert_array_compare
    val = comparison(x, y)
  File "/export/tom/anaconda/envs/astropy/lib/python3.6/site-packages/numpy/testing/utils.py", line 953, in compare
    z = abs(x - y)
  File "/export/tom/anaconda/envs/astropy/lib/python3.6/site-packages/numpy/ma/core.py", line 4079, in __sub__
    return subtract(self, other)
  File "/export/tom/anaconda/envs/astropy/lib/python3.6/site-packages/numpy/ma/core.py", line 1046, in __call__
    result = self.f(da, db, *args, **kwargs)
ValueError: operands could not be broadcast together with shapes (3,) (2,) 


Arrays are not almost equal to 6 decimals
 x: MaskedArray([ 3.4,  nan,  6.3])
 y: array([ 3.4,  6.3])

Activity

  1. mhvk commented on May 19, 2018

    @mhvk
    Contributor

    Tricky one! Turns out a problem with the nan being removed from y in the comparison but the masked element in c not being removed. Fix in the works...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions