📜  numpy.unravel_index()函数| Python(1)

📅  最后修改于: 2023-12-03 15:03:19.619000             🧑  作者: Mango

numpy.unravel_index()函数介绍

numpy.unravel_index(indices, shape, order='C')函数返回沿给定形状的数组的展平索引的坐标。

参数
  • indices:要展开的数组索引,可以是一个整数或数组。
  • shape:数组形状,整数元组。
  • order:可选参数,有'C'和'F'两种选项,表示以行优先或列优先的顺序从indices中抽取元素。
返回值

返回坐标元组或坐标数组,其形状与索引数组indices的形状相同。

示例
import numpy as np

# 定义一个3x3的数组
arr = np.arange(9).reshape((3, 3))
print("原始数组:\n", arr)

# 返回展开索引4的坐标
coord = np.unravel_index(4, arr.shape)
print("元素4的坐标是:", coord)

# 将randint函数返回的一维数组转换为坐标数组
idx = np.random.randint(0, 9, size=(3,))
coord_array = np.unravel_index(indices=idx, shape=arr.shape)
print("随机三个元素的坐标是:", coord_array)

输出结果:

原始数组:
 [[0 1 2]
 [3 4 5]
 [6 7 8]]
元素4的坐标是: (1, 0)
随机三个元素的坐标是: (array([2, 1, 0]), array([0, 1, 1]))

在上述示例中,我们首先定义了一个3x3的数组arr,并用np.arange()函数初始化其元素为0-8。然后,使用np.unravel_index()函数展开其索引为4的元素,返回了元素坐标(1, 0)。最后,我们将三个随机选取的整数元素的索引放到一个一维数组中,并使用np.unravel_index()函数将其转换为一个包含三个元组的数组,表示对应元素在arr中的坐标。

注意:np.unravel_index()函数在对于大数组时是比较耗费计算资源的,因此,它不应该经常使用在循环或其他需要高效率运算的场合。