numpy 中 np.unravel_index 使用

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近看到 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)
基于计算机视觉Java开发的人体姿态识别检测、分析评分项目源码(实时显示关键点、手肘、肩膀、膝盖等角度信息).zip 基于计算机视觉技术,使用Java开发的人体姿态识别检测与分析评分项目是一个综合性的应用,旨在通过实时视频流或图像输入,自动检测人体关键点(如头部、肩膀、手肘、手腕、膝盖、脚踝等),并进一步分析这些关键点的相对位置以计算角度信息(如手肘弯曲角度、膝盖弯曲角度等),最终根据这些角度信息给出姿态的评分或分析。 【说明】 【1】项目代码完整且功能都验证ok,确保稳定可靠运行后才上传。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 【2】项目主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 【3】项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 【4】如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能,欢迎交流学习。 【注意】 项目下载解压后,项目名字和项目路径不要用中文,建议解压重命名为英文名字后再运行!有问题私信沟通,祝顺利!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值