Re: [Numpy-discussion] Porting code for Numpy 1.13+ to get rid of "boolean index did not match indexed array along dimension 1" error

2019-02-12 Thread Eric Wieser
It looks like your code is wrong, and numpy 1.12 happened to let you get
away with it

This line:

evals = evals[evals > tolerance]

Reduces the eigenvalues to only those which are greater than the tolerance

When you do U[:, evals > tolerance], evals > tolerance is just going
to be [True,
True, ...].

You need to swap the last two lines, to

U = U[:, evals > tolerance]
evals = evals[evals > tolerance]

Or better yet, introduce an intermediate variable:

keep = evals > tolerance
evals = evals[keep]
U = U[:, keep]

Eric
​

On Tue, 12 Feb 2019 at 15:16 Mauro Cavalcanti  wrote:

> Dear ALL,
>
> I am trying to port an eigenalysis function that runs smoothly on Numpy
> 1.12 but fail miserably on Numpy 1.13 or higher with the dreadful error
> "boolean index did not match indexed array along dimension 1".
>
> Here is a fragment of the code, where the error occurrs:
>
> evals, evecs = np.linalg.eig(Syy)
> idx = evals.argsort()[::-1]
> evals = np.real(evals[idx])
> U = np.real(evecs[:, idx])
> evals = evals[evals > tolerance]
> U = U[:, evals > tolerance] # Here is where the error occurs
>
> So, I ask: is there a way out of this?
>
> Thanks in advance for any assistance you can provide.
> ___
> 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] Porting code for Numpy 1.13+ to get rid of "boolean index did not match indexed array along dimension 1" error

2019-02-12 Thread Mauro Cavalcanti
Dear ALL,

I am trying to port an eigenalysis function that runs smoothly on Numpy
1.12 but fail miserably on Numpy 1.13 or higher with the dreadful error
"boolean index did not match indexed array along dimension 1".

Here is a fragment of the code, where the error occurrs:

evals, evecs = np.linalg.eig(Syy)
idx = evals.argsort()[::-1]
evals = np.real(evals[idx])
U = np.real(evecs[:, idx])
evals = evals[evals > tolerance]
U = U[:, evals > tolerance] # Here is where the error occurs

So, I ask: is there a way out of this?

Thanks in advance for any assistance you can provide.
___
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion


[Numpy-discussion] Reminder: weekly status meeting Feb. 13 at 12:00 Pacific Time

2019-02-12 Thread Tyler Reddy
Draft agenda: https://hackmd.io/f_e6dnssTkuIC0Pa0TEV6w?view

There is a section for community suggested topics, feel free to join the
conversation and add in topics that need attention.

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