
Hi Travis, thanks for answering, A Friday 29 October 2010 06:34:52 Travis Oliphant escrigué:
The __index__ method returns an integer from an array.
The current behavior follows the idea of "return an integer if there is 1-element in the array"
Your suggestion is to only return an integer if it is a rank-0 array, otherwise raise an error.
Yes. I think this makes a lot of sense because a rank-0 array can be seen as a scalar (and hence, and index), but it is difficult to see a rank-1 (or, in general, rank-N) array as a scalar (even if only has 1 single element). In particular, this would avoid this inconsistency:
a[np.array(1)] 1 a[np.array([1])] array([1]) a[np.array([[[1]]])] array([[[1]]])
but:
np.array(1).__index__() 1 np.array([1]).__index__() 1 np.array([[[1]]]).__index__() 1
This could potentially be changed in NumPy 2.0. I'm +0 on the suggestion.
My vote is +1 for deprecating ``array([scalar])`` as a scalar index for NumPy 2.0. -- Francesc Alted