[Numpy-discussion] array_equal too strict?

Sebastian Berg sebastian at sipsolutions.net
Thu Dec 17 09:19:40 EST 2015


On Do, 2015-12-17 at 13:43 +0000, Nico Schlömer wrote:
> Hi everyone,
> 
> 
> I noticed a funny behavior in numpy's array_equal. The two arrays
> ```
> a1 = numpy.array(
>     [3.14159265358979320],
>     dtype=numpy.float64
>     )
> a2 = numpy.array(
>     [3.14159265358979329],
>     dtype=numpy.float64
>     )
> ```
> (differing the in the 18th overall digit) are reported equal by
> array_equal:

If you have some spare cycles, maybe you can open a pull request to add
np.isclose to the "See Also" section?

- Sebastian


> ```
> print(numpy.array_equal(a1, a2))
> 
> # output: true
> ```
> That's expected because the difference is only in the 18th overall
> digit, and the mantissa length of float64 is 52 bits [1], i.e., approx
> 15.6 decimal digits. Moving the difference to the 17th overall digit
> should also be fine, however:
> ```
> a1 = numpy.array(
>     [3.1415926535897930],
>     dtype=numpy.float64
>     )
> a2 = numpy.array(
>     [3.1415926535897939],
>     dtype=numpy.float64
>     )
> 
> 
> print(numpy.array_equal(a1, a2))
> # output: false
> ```
> It gets even more visible with float32 and its 23 mantissa bits (i.e.,
> 6.9 decimal digits):
> ```
> a1 = numpy.array(
>     [3.14159260],
>     dtype=numpy.float32
>     )
> a2 = numpy.array(
>     [3.14159269],
>     dtype=numpy.float32
>     )
> 
> 
> print(numpy.array_equal(a1, a2))
> # output: false
> ```
> The difference is only in the 9th decimal digit, still `array_equal_
> detects the difference.
> 
> 
> I'm not sure where I'm going wrong here. Any hints?
> 
> 
> Cheers,
> Nico
> 
> 
> 
> 
> [1] https://docs.scipy.org/doc/numpy-1.10.1/user/basics.types.html
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> https://mail.scipy.org/mailman/listinfo/numpy-discussion

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20151217/5139b729/attachment.sig>


More information about the NumPy-Discussion mailing list