@@ -3465,37 +3465,36 @@ def index(self, value, max=False):
34653465 if self .ndim != 1 :
34663466 raise NeXusError (
34673467 "NXfield must be one-dimensional to use the index function" )
3468- if self .nxdata [- 1 ] < self .nxdata [0 ]:
3469- flipped = True
3470- else :
3471- flipped = False
3468+ data = self .nxdata
3469+ count = len (data )
3470+ if count == 0 :
3471+ return 0
3472+ flipped = data [- 1 ] < data [0 ]
34723473 if max :
34733474 if flipped :
3474- idx = np .max (len (self .nxdata ) -
3475- len (self .nxdata [self .nxdata < value ])- 1 , 0 )
3475+ idx = np .maximum (count - np .count_nonzero (data < value ) - 1 , 0 )
34763476 else :
3477- idx = np .max (len (self .nxdata ) -
3478- len (self .nxdata [self .nxdata > value ])- 1 , 0 )
3477+ idx = np .maximum (count - np .count_nonzero (data > value ) - 1 , 0 )
34793478 try :
3480- diff = value - self . nxdata [idx ]
3481- step = self . nxdata [idx + 1 ] - self . nxdata [idx ]
3479+ diff = value - data [idx ]
3480+ step = data [idx + 1 ] - data [idx ]
34823481 if abs (diff / step ) > 0.01 :
3483- idx = idx + 1
3484- except IndexError :
3482+ idx += 1
3483+ except ( IndexError , ZeroDivisionError ) :
34853484 pass
34863485 else :
34873486 if flipped :
3488- idx = len ( self . nxdata [ self . nxdata > value ] )
3487+ idx = np . count_nonzero ( data > value )
34893488 else :
3490- idx = len ( self . nxdata [ self . nxdata < value ] )
3489+ idx = np . count_nonzero ( data < value )
34913490 try :
3492- diff = value - self . nxdata [idx - 1 ]
3493- step = self . nxdata [idx ] - self . nxdata [idx - 1 ]
3491+ diff = value - data [idx - 1 ]
3492+ step = data [idx ] - data [idx - 1 ]
34943493 if abs (diff / step ) < 0.99 :
3495- idx = idx - 1
3496- except IndexError :
3494+ idx -= 1
3495+ except ( IndexError , ZeroDivisionError ) :
34973496 pass
3498- return int (np .clip (idx , 0 , len ( self . nxdata ) - 1 ))
3497+ return int (np .clip (idx , 0 , count - 1 ))
34993498
35003499 def __array__ (self , * args , ** kwargs ):
35013500 """Cast the NXfield as a NumPy array."""
0 commit comments