ok let me be more precise

I have an Z array which is the elevation
from this I extract a discrete array of Zero Crossing, and another discrete array of Crests.
len(crest) is different than len(Xzeros). I have a threshold method to detect my "valid" crests, and sometimes there are 2 crests between two zero-crossing (grouping effect)

Crest and Zeros are 2 different arrays, with positions. example: Zeros=[1,2,3,4] Arrays=[1.5,1.7,3.5]


and yes arrays can be sorted. not a problm with this.

Xavier

2011/12/6 David Froger <david.froger@gmail.com>
Excerpts from Xavier Barthelemy's message of mar. déc. 06 06:53:09 +0100 2011:
> Hi everyone
>
> I was wondering if there is a more optimal way to write what follows:
> I am studying waves, so I have an array of wave crests positions, Xcrest
> and the positions of the ZeroCrossings, Xzeros.
>
> The goal is to find between which Xzeros my xcrest are.
>
>
> XXX1=XCrest
> CrestZerosNeighbour=np.zeros([len(XCrest),2], dtype='d')
> for nn in range(len(Xzeros)-1):
>     X1=Xzeros[nn]
>     X2=Xzeros[nn+1]
>     indexxx1=np.where((X1<=XXX1) & (XXX1 < X2))
>     try:
>       CrestZerosNeighbour[indexxx1[0]]=np.array([X1,X2])
>     except:
>       pass
>
> Someone has an idea? in the spirit of (numpy.ma.masked_outside) which does
> exactly the opposite I want: it masks an array outside an interval. I would
> like to mask everything except the interval that contains my value.
> I do this operation a large number of times , and a loop is time consuming.

Hi,

My first idea  would be to write a  function in C or Fortran  that return Xzeros
index (instead of values).  Algorithms may be optimized according to the inputs:
if  the  XCrest  are  Xzeros  sorted,   if  len(Xcreast)  >>  len(Xzeros)  using
dichotomy...  But I would be interested to see a solution with masked array too.

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



--
 « Quand le gouvernement viole les droits du peuple, l'insurrection est, pour le peuple et pour chaque portion du peuple, le plus sacré des droits et le plus indispensable des devoirs »

Déclaration des droits de l'homme et du citoyen, article 35, 1793