Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Numpy.where function not finding values within array... Anyone know why?

I have been trying to use python's numpy.where function to determine the location of a specific value, but for some reason it incorrectly determines False where the value is actually found. Thereby returning an empty array. See below:

>>>lbpoly=numpy.array([ 5.45  5.5   5.55  5.6   5.65  5.7   5.75  5.8   5.85  5.9   5.95  6.
6.05  6.1   6.15  6.2   6.25  6.3   6.35  6.4   6.45  6.5   6.55  6.6
6.65  6.7   6.75  6.8   6.85  6.9   6.95  7.  ])

>>>cpah=numpy.where(lbpoly==6.2)

>>>print cpah

>>>(array([], dtype=int32),)

Does anyone know why this is happening? I've tried many different variants, even using < and > logic. But this produces indices for 2 values.

like image 373
Lawrence Avatar asked Mar 06 '16 17:03

Lawrence


1 Answers

There is very little meaning in comparing floating point numbers; in particular, there is a lot you cannot learn by observing the printed representation of floating point numbers. (See more here.)

Try something like this:

import numpy as np

lbpoly= np.array([4.0, 6.2])

>>> np.where(np.isclose(lbpoly, 6.2))
(array([1]),)
like image 78
Ami Tavory Avatar answered Sep 17 '22 13:09

Ami Tavory