[Numpy-discussion] np.unique with structured arrays

Jaime Fernández del Río jaime.frio at gmail.com
Fri Aug 22 10:22:38 EDT 2014


I can confirm, the issue seems to be in sorting:

>>> np.sort(V_)
array([([0.5, 0.0, 1.0],), ([0.5, 0.0, -1.0],), ([0.5, -0.0, 1.0],),
       ([0.5, -0.0, -1.0],)],
      dtype=[('v', '<f4', (3,))])

These I think are handled by the generic sort functions, and it looks like
the comparison function being used is the one for a VOID dtype with no
fields, so it is being done byte-wise, hence the problems with 0.0 and
-0.0. Not sure where exactly the bug is, though...

Jaime



On Fri, Aug 22, 2014 at 6:20 AM, Nicolas P. Rougier <
Nicolas.Rougier at inria.fr> wrote:

>
> Hello,
>
> I've found a strange behavior or I'm missing something obvious (or
> np.unique is not supposed to work with structured arrays).
>
> I'm trying to extract unique values from a simple structured array but it
> does not seem to work as expected.
> Here is a minimal script showing the problem:
>
> import numpy as np
>
> V = np.zeros(4, dtype=[("v", np.float32, 3)])
> V["v"] = [ [0.5,    0.0,   1.0],
>            [0.5, -1.e-16,  1.0], # [0.5, +1.e-16,  1.0] works
>            [0.5,    0.0,  -1.0],
>            [0.5, -1.e-16, -1.0]] # [0.5, +1.e-16, -1.0]] works
> V_ = np.zeros_like(V)
> V_["v"][:,0] = V["v"][:,0].round(decimals=3)
> V_["v"][:,1] = V["v"][:,1].round(decimals=3)
> V_["v"][:,2] = V["v"][:,2].round(decimals=3)
>
> print np.unique(V_)
> [([0.5, 0.0, 1.0],) ([0.5, 0.0, -1.0],) ([0.5, -0.0, 1.0],) ([0.5, -0.0,
> -1.0],)]
>
>
> While I would have expected:
>
> [([0.5, 0.0, 1.0],) ([0.5, 0.0, -1.0],)]
>
>
> Can anyone confirm ?
>
>
> Nicolas
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>


-- 
(\__/)
( O.o)
( > <) Este es Conejo. Copia a Conejo en tu firma y ayúdale en sus planes
de dominación mundial.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20140822/d54a0eb8/attachment.html>


More information about the NumPy-Discussion mailing list