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.
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]),)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With