# [Numpy-discussion] Compound conditional indexing

Gökhan Sever gokhansever@gmail....
Wed Sep 30 14:51:05 CDT 2009

```On Wed, Sep 30, 2009 at 2:45 PM, Robert Kern <robert.kern@gmail.com> wrote:

> On Wed, Sep 30, 2009 at 14:40, Gökhan Sever <gokhansever@gmail.com> wrote:
> > Thanks this works.
> >
> > My second question how to access a second array using this condition?
> >
> > I am trying slice another array using a compound condition on the
> reference
> > array.
> >
> > say:
> >
> > a = 1,2,3,4,5,
> > b = 20,30,40,50,60
> >
> > I want to get elements of a only when a = 3,4. I know I need indices but
> how
> > ?
>
> Did you mean "elements of b only where a = 3,4"?
>
> b[(a==3) | (a==4)]
>
> --
> Robert Kern
>
> "I have come to believe that the whole world is an enigma, a harmless
> enigma that is made terrible by our own mad attempt to interpret it as
> though it had an underlying truth."
>  -- Umberto Eco
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>

Ok, ok got it. Thanks Robert :)

Following is what I have been looking for exactly.

I[1]: a = arange(5)

I[2]: b = arange(5)*10

I[3]: a
O[3]: array([0, 1, 2, 3, 4])

I[4]: b
O[4]: array([ 0, 10, 20, 30, 40])

I[5]: b[(a>1) & (a<3)]
O[5]: array([20])

I was forgetting the parenthesis, and consequently I was being bitten by

ValueError: The truth value of an array with more than one element is
ambiguous. Use a.any() or a.all()

I am glad that it is not my understanding of logic but the usage of NumPy.

--
Gökhan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/numpy-discussion/attachments/20090930/f3bb1664/attachment.html
```