normalized_index_expression¶
- odl.util.normalize.normalized_index_expression(indices, shape, int_to_slice=False)[source]¶
- Enable indexing with almost Numpy-like capabilities. - Implements the following features: - Usage of general slices and sequences of slices 
- Conversion of - Ellipsisinto an adequate number of- slice(None)objects
- Fewer indices than axes by filling up with an - Ellipsis
- Error checking with respect to a given shape 
- Conversion of integer indices into corresponding slices 
 - Parameters:
- Returns:
- normalizedtuple of ints or slice's
- Normalized index expression 
 
- normalizedtuple of ints or 
 - Examples - Sequences are turned into tuples. We can have at most as many entries as the length of - shape, but fewer are allowed - the remaining list places are filled up by- slice(None):- >>> normalized_index_expression([1, 2, 3], shape=(3, 4, 5)) (1, 2, 3) >>> normalized_index_expression([1, 2], shape=(3, 4, 5)) (1, 2, slice(None, None, None)) >>> normalized_index_expression([slice(2), 2], shape=(3, 4, 5)) (slice(None, 2, None), 2, slice(None, None, None)) >>> normalized_index_expression([1, Ellipsis], shape=(3, 4, 5)) (1, slice(None, None, None), slice(None, None, None)) - By default, integer indices are kept. If they should be converted to slices, use - int_to_slice=True. This can be useful to guarantee that the result of slicing with the returned object is of the same type as the array into which is sliced and has the same number of axes:- >>> x = np.zeros(shape=(3, 4, 5)) >>> idx1 = normalized_index_expression([1, 2, 3], shape=(3, 4, 5), ... int_to_slice=True) >>> idx1 (slice(1, 2, None), slice(2, 3, None), slice(3, 4, None)) >>> x[idx1] array([[[ 0.]]]) >>> idx2 = normalized_index_expression([1, 2, 3], shape=(3, 4, 5), ... int_to_slice=False) >>> idx2 (1, 2, 3) >>> x[idx2] 0.0