numpy 中 np.unravel_index 使用

本文详细解析了np.unravel_index函数的功能与使用方法,通过实例展示了如何将一维索引转换为多维数组的坐标,适用于不同形状的数组,并解释了参数order的影响。
Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

最近看到 np.unravel_index 这个函数,不知道这个函数是什么作用,上网查,网上说的也不是很明白,于是自己研究终于算是大体看懂了:

完整函数定义:unravel_index(indices, shape, order=‘C’)
函数作用:

首先,我们会问:indices是个啥呀? indices 就是索引值,可以是一个数,也可以是一个列表。
例如 indices = 1 ,indices = [3,12] 。
shape 代表的是数组的形状
函数的作用就是得到 indices 中每一项对应到形状为shape的数组中的坐标。这样说可能不清晰,我们看例子!:

实例:

假设有一个列表:[2,3,4,5,6,7,8,1,12,23,34,55]
我们要取得其中最小值的索引,睁眼以看,索引为:7 (从0开始)
但是当你用到了numpy的时候,你很难不将其变为数组吧(要不然你用numpy有啥用?),那我们就将其变成一个 3x4的矩阵吧!:

a = [2,3,4,5,6,7,8,1,12,23,34,55]
b = np.array(a).reshape((3,4))
print(b)

结果:
array([[ 2, 3, 4, 5],
[ 6, 7, 8, 1],
[12, 23, 34, 55]])
既然我们已经转化为矩阵了,那么我如果再要想得到这个矩阵的最小值所对应的索引我应该怎么办?不能再用之前的 7 了吧。矩阵的索引需要是一个“坐标”,这样我们如何求这个坐标?此时unravel_index 就用上了:
indices 就是 7 (代表的是原来的索引),shape 就是(3,4)(代表的就是矩阵形状),而 order
由两种取值:“C”,“F”,“C”表示的是以横坐标为基准;“F”表示的是以纵坐标为基准。 例如:我们使用函数:np.unravel_index(7,(3,4),order=‘C’),得到结果为:(1,3)
如果我们使用函数:np.unravel_index(7,(3,4),order=‘F’),得到结果为:(1,2)

为什么会产生这种结果?
  1. 结果为(1,3):形状为(3,4)的矩阵为 3 行 4 列,设横纵坐标 x,y,则4*x+y=7,得出x=1,y=3,因此结果为(1,3)
  2. 结果为(1,2):形状为(3,4)的矩阵为 3 行 4 列,设横纵坐标 x,y,因为此时的order=“F”,所以要以纵坐标为基准 设横纵坐标 x,y,则3*y + x = 7 ,得到(4,1) 和 (1,2)两个结果,显然(4,1)超出了范围,因此选择(1,2)

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值