[Numpy-discussion] another little index puzzle

Henry Gomersall heng@cantab....
Mon Jan 21 08:02:14 CST 2013


On Mon, 2013-01-21 at 08:41 -0500, Neal Becker wrote:
> I have an array to be used for indexing.  It is 2d, where the rows are
> all the 
> permutations of some numbers.  So:
> 
> array([[-2, -2, -2],
>        [-2, -2, -1],
>        [-2, -2,  0],
>        [-2, -2,  1],
>        [-2, -2,  2],
>  ...
>        [ 2,  1,  2],
>        [ 2,  2, -2],
>        [ 2,  2, -1],
>        [ 2,  2,  0],
>        [ 2,  2,  1],
>        [ 2,  2,  2]])
> 
> Here the array is 125x3
> 
> I want to select all the rows of the array in which all the 3 elements
> are 
> equal, so I can remove them.  So for example, the 1st and last row.

You can use a convolution to pick out the changes...

conv_arr = numpy.array([[1, -1, 0], [0, 1, -1]])
equal_selector = ~numpy.any(numpy.dot(b, numpy.transpose(a)), 0)

or
unequal_selector = numpy.any(numpy.dot(b, numpy.transpose(a)), 0)

hen



More information about the NumPy-Discussion mailing list