In what way does it not work? Does it error out at the `arr = arr[mask]` step? Or is it that something unexpected happens?

I am guessing that you are trying to mutate the px, py, pz, w, x, y, z arrays? If so, that for-loop won't do it. In python, a plain simple assignment merely makes the variable point to a different object. It doesn't mutate the object itself.

Cheers!
Ben Root


On Fri, Oct 27, 2017 at 11:43 AM, Andrei Berceanu <berceanu@runbox.com> wrote:
Hmm, so how come this doesn't work now?

mask = ((px > 2.) & ((py**2 + pz**2) / px**2 < 1.))

for arr in (px, py, pz, w, x, y, z):
    arr = arr[mask]

On Mon, 23 Oct 2017 15:05:26 +0200 (CEST), "Andrei Berceanu" <berceanu@runbox.com> wrote:

> Thank you so much, the solution was much simpler than I expected!
>
> On Sat, 21 Oct 2017 23:04:43 +0200, Daπid <davidmenhur@gmail.com> wrote:
>
> > On 21 October 2017 at 22:32, Eric Wieser <wieser.eric+numpy@gmail.com>
> > wrote:
> >
> > > David, that doesn’t work, because np.cumsum(mask)[mask] is always equal
> > > to np.arange(mask.sum()) + 1. Robert’s answer is correct.
> > >
> > Of course, you are right. It makes sense in my head now.
> > _______________________________________________
> > NumPy-Discussion mailing list
> > NumPy-Discussion@python.org
> > https://mail.python.org/mailman/listinfo/numpy-discussion
>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@python.org
> https://mail.python.org/mailman/listinfo/numpy-discussion


_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion