cupy.ravel_multi_index#

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

将一个索引数组元组转换为一个扁平索引数组,对多维索引应用边界模式。

参数:
  • multi_index (tuple of cupy.ndarray) – 一个整数数组的元组,每个维度对应一个数组。

  • dims (tuple of ints) – 索引 multi_index 应用到的数组形状。

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

    指定如何处理越界索引。可以指定一种模式,或一个模式元组,每个索引一个模式。

    • ’raise’ – 引发错误

    • ’wrap’ – 环绕 (默认)

    • ’clip’ – 裁剪到范围内

    在 'clip' 模式下,通常会环绕的负索引将裁剪到 0。

  • order ('C' or 'F') – 确定多维索引应被视为按行主序 (C 风格) 还是按列主序 (Fortran 风格) 索引。

返回:

一个数组,其中包含维度为 dims 的扁平化数组的索引。

返回类型:

raveled_indices (cupy.ndarray)

警告

mode == 'raise' 时,此函数可能会同步设备。

注意

请注意,默认的 mode ('wrap') 与 NumPy 不同。这样做是为了避免潜在的设备同步。

示例

>>> 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)