[SciPy-User] find intervall in array

josef.pktd@gmai... josef.pktd@gmai...
Tue Jan 26 04:31:31 CST 2010


On Tue, Jan 26, 2010 at 5:15 AM, Massimo Di Stefano
<massimodisasha@yahoo.it> wrote:
> Hi All,
>
> i have a 2xN array where :
>
> - first column = integer values sorted from min to max
> - second column = float values (range 0 - 1)
>
> an example array can look like :
>
> from numpy import zeros, array
> import random
> a = zeros((100,2),float)
> for i in range(100):
>  a[i,0] = random.randrange(1000,2000,10)
>  a[i,1] = random.random()
>
>
>
> the first column represent "Z" (elevation values)
> the second column represent percentage 0 = 0% , 1 = 100% (pixel % coverage in a map at given Z)
>
> i need to detect the Z value correspond to a precise percentage (25%, 50%, 75%)
>
> he Z value i need to find is deducted from a formula like :
>
> z = z1 + ((z2 - z1) / (f2 - f1)) * (f - f1)
>
> where :
>
> f  = precise percentage (know value) -> (0.25, 0.50, 0.75)  [this value can be not present in the a[i,1] array]
>
> f1, f2 =  are the a[i,1] values near the " f " value   where     [ f1 <= f <= f2 ]
> z1, z2 =  Z value correspond to the f1, f2
>
> as example :
>
> array a =
>
> z           f
> 1234    0.03
> 1345    0.58
> 1456    0.24
> 1457    0.63
> 1458    0.41
> 1459    0.78
> 1365    0.7
> 1468    0.56
> 1545    0.54
>
> if
> f = 0.5 :
> z = 1545 + ((1468 - 1545) / (0.56 - 0.54)) * (0.5 - 0.54)
>
> any suggestion on how can i find "f1 , f2" ?
>
>
> thanks!!!
>
> Massimo.
> _______________________________________________
> SciPy-User mailing list
> SciPy-User@scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>

maybe something like :
ind = np.searchsorted(a[:,1], f]
f1,f2 = a[[ind, ind+1], 1]

after fixing the indexing.

Josef


More information about the SciPy-User mailing list