cupy.ravel_multi_index#

cupy.ravel_multi_index(multi_index, dims, mode='wrap', order='C')[source]#

Converts a tuple of index arrays into an array of flat indices, applying boundary modes to the multi-index.

Parameters:
  • multi_index (tuple of cupy.ndarray) – A tuple of integer arrays, one array for each dimension.

  • dims (tuple of ints) – The shape of array into which the indices from multi_index apply.

  • mode ('raise', 'wrap' or 'clip') –

    Specifies how out-of-bounds indices are handled. Can specify either one mode or a tuple of modes, one mode per index:

    • ’raise’ – raise an error

    • ’wrap’ – wrap around (default)

    • ’clip’ – clip to the range

    In ‘clip’ mode, a negative index which would normally wrap will clip to 0 instead.

  • order ('C' or 'F') – Determines whether the multi-index should be viewed as indexing in row-major (C-style) or column-major (Fortran-style) order.

Returns:

An array of indices into the flattened version of an array of dimensions dims.

Return type:

raveled_indices (cupy.ndarray)

Warning

This function may synchronize the device when mode == 'raise'.

Notes

Note that the default mode ('wrap') is different than in NumPy. This is done to avoid potential device synchronization.

Examples

>>> cupy.ravel_multi_index(cupy.asarray([[3,6,6],[4,5,1]]), (7,6))
array([22, 41, 37])
>>> cupy.ravel_multi_index(cupy.asarray([[3,6,6],[4,5,1]]), (7,6),
...                        order='F')
array([31, 41, 13])
>>> cupy.ravel_multi_index(cupy.asarray([[3,6,6],[4,5,1]]), (4,6),
...                        mode='clip')
array([22, 23, 19])
>>> cupy.ravel_multi_index(cupy.asarray([[3,6,6],[4,5,1]]), (4,4),
...                        mode=('clip', 'wrap'))
array([12, 13, 13])
>>> cupy.ravel_multi_index(cupy.asarray((3,1,4,1)), (6,7,8,9))
array(1621)