python数据分析numpy基础之argmin求数组最小值索引

1 python数据分析numpy基础之argmin求数组最小值索引

python的numpy库的argmin()函数,用于获取沿指定轴的最小值的索引。

用法

numpy.argmin(a, axis=None, out=None, *, keepdims=<no value>)

描述

argmin()返回沿指定轴的最小值的索引。

入参axis表示指定轴,默认为None表示整个数组的最小值的索引而不是某个轴的最小值,即转为一维数组后的最小值的索引。axis只能为整数,不支持整数元组。

入参keepdims表示是否保留指定轴的尺寸为1,默认为False,不保留。

1.1 入参a

numpy.argmin()的入参a,为必选入参,可以为数组、列表、元组。

>>> import numpy as np
# 入参a为列表
>>> np.argmin([-5,-10,0,1,5])
1
# 入参a为元组
>>> np.argmin((-5,-10,0,1,5))
1
# 入参a为数组
>>> np.argmin(np.array((-5,-10,0,1,5)))
1

1.2 入参axis为整数

numpy.argmin()的入参axis为可选入参,只能为整数(不支持元组),范围[0, ndim),默认为None,表示求整个数组的最小值的索引,若为多维数组则转换为一维数组来获取最小值的索引。

若axis=n为整数,则对沿指定轴n的元素求最小值的索引,并且只返回指定轴的索引,其他轴索引不返回。

若axis=负数,则-1对应最后一个轴,-2倒数第2个轴,依此类推。

最小值多次出现时,argmin()返回第一次出现的索引。

np.ndindex(ar3.shape) 获取指定形状数组的索引迭代器对象,遍历迭代器索引获取数组元素。

>>> import numpy as np
>>> ar3=np.array([[[12, 13, 8, 15 ],[ 19,  25,  16,  5],[ 18,  29, 10, 31]],[[9,  11,  21,  3],[16, 17, 18, 19],[20, 3, 22, 23]]])
# axis默认为None,返回整个数组的最小值的索引
>>> np.argmin(ar3)
15
# ar3最小值为3
>>> np.min(ar3)
3
# axis=None时,ar3相当于一维数组
>>> ar3.reshape(ar3.size)
array([12, 13,  8, 15, 19, 25, 16,  5, 18, 29, 10, 31,  9, 11, 21,  3, 16,17, 18, 19, 20,  3, 22, 23])
# 最小值多次出现时,返回第一次出现的索引
# 索引为15的值为最小值3,为第一次出现的索引,索引argmin()返回15
>>> ar3.reshape(ar3.size)[15]
3
# 索引为21的值为最小值3
>>> ar3.reshape(ar3.size)[21]
3
# np.ndindex(ar3.shape) 获取指定形状数组的索引迭代器对象
>>> ar3vis=[str(ar3[i])+str(i) for i in np.ndindex(ar3.shape)]
>>> ar3vi=np.array(ar3vi).reshape(ar3.shape)
# 获取ar3数组和其索引
# n维数组由n个轴的索引组成
# 比如三维数组索引(1, 0, 0),分别表示0/1/2轴的索引
>>> ar3vi
array([[['12(0, 0, 0)', '13(0, 0, 1)', '8(0, 0, 2)', '15(0, 0, 3)'],['19(0, 1, 0)', '25(0, 1, 1)', '16(0, 1, 2)', '5(0, 1, 3)'],['18(0, 2, 0)', '29(0, 2, 1)', '10(0, 2, 2)', '31(0, 2, 3)']],[['9(1, 0, 0)', '11(1, 0, 1)', '21(1, 0, 2)', '3(1, 0, 3)'],['16(1, 1, 0)', '17(1, 1, 1)', '18(1, 1, 2)', '19(1, 1, 3)'],['20(1, 2, 0)', '3(1, 2, 1)', '22(1, 2, 2)', '23(1, 2, 3)']]],dtype='<U11')
# axis=0,只返回沿0轴最小值的索引,0轴大小为2,索引只有0,1
>>> np.argmin(ar3,axis=0)
array([[1, 1, 0, 1],[1, 1, 0, 0],[0, 1, 0, 1]], dtype=int64)
# min()获取0轴最小值,argmin()获取0轴最小值的索引
# 比如9的索引为(1, 0, 0),取0轴索引1
>>> np.min(ar3,axis=0)
array([[ 9, 11,  8,  3],[16, 17, 16,  5],[18,  3, 10, 23]])
# axis=1,只返回沿1轴最小值的索引,1轴大小为3,索引只有0,1,2
>>> np.argmin(ar3,axis=1)
array([[0, 0, 0, 1],[0, 2, 1, 0]], dtype=int64)
# 比如3(1, 2, 1),取1轴索引2
>>> np.min(ar3,axis=1)
array([[12, 13,  8,  5],[ 9,  3, 18,  3]])
# axis=2,只返回沿2轴最小值的索引,2轴大小为4,索引只有0,1,2,3   
>>> np.argmin(ar3,axis=2)
array([[2, 3, 2],[3, 0, 1]], dtype=int64)
# 比如 5(0, 1, 3),取2轴索引3
>>> np.min(ar3,axis=2)
array([[ 8,  5, 10],[ 3, 16,  3]])
# axis=负数,则-1对应最后一个轴,-2倒数第2个轴,依此类推。
>>> np.argmin(ar3,axis=-1)
array([[2, 3, 2],[3, 0, 1]], dtype=int64)

1.3 入参keepdims

numpy.argmin()的入参keepdims为可选入参,只能为False或True,默认为False。

keepdims为False则不保留指定轴的尺寸,即返回最小值索引的数组形状,不包括指定轴。

keepdims为True则保留指定轴的持仓为1,即返回最小值索引的数组形状,包括指定轴且大小为1。

>>> import numpy as np
>>> ar3=np.array([[[12, 13, 8, 15 ],[ 19,  25,  16,  5],[ 18,  29, 10, 31]],[[9,  11,  21,  3],[16, 17, 18, 19],[20, 3, 22, 23]]])
>>> kdnt=np.argmin(ar3,keepdims=True)
>>> kdnf=np.argmin(ar3,keepdims=False)
>>> kdn=np.argmin(ar3)
# keepdims=True,最小值索引数组,保留指定轴,且尺寸为1
>>> kdnt.shape,kdnt.ndim
((1, 1, 1), 3)
# keepdims=False,最小值索引数组,删除指定轴
>>> kdnf.shape,kdnf.ndim
((), 0)
# keepdims默认False,最小值索引数组,删除指定轴
>>> kdn.shape,kdn.ndim
((), 0)
>>> kdnt,kdnf,kdn
(array([[[15]]], dtype=int64), 15, 15)
>>> kd0t=np.argmin(ar3,axis=0,keepdims=True)
>>> kd0=np.argmin(ar3,axis=0)
# True保留axis=0且尺寸为1
>>> kd0t.shape,kd0t.ndim
((1, 3, 4), 3)
# False删除axis=0
>>> kd0.shape,kd0.ndim
((3, 4), 2)
>>> kd0t
array([[[1, 1, 0, 1],[1, 1, 0, 0],[0, 1, 0, 1]]], dtype=int64)
>>> kd0
array([[1, 1, 0, 1],[1, 1, 0, 0],[0, 1, 0, 1]], dtype=int64)
>>> kd1t=np.argmin(ar3,axis=1,keepdims=True)
>>> kd1=np.argmin(ar3,axis=1)
# True保留axis=1且尺寸为1
>>> kd1t.shape,kd1t.ndim
((2, 1, 4), 3)
# False删除axis=1
>>> kd1.shape,kd1.ndim
((2, 4), 2)
>>> kd1t
array([[[0, 0, 0, 1]],[[0, 2, 1, 0]]], dtype=int64)
>>> kd1
array([[0, 0, 0, 1],[0, 2, 1, 0]], dtype=int64)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/708104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【矩阵】计算矩阵边缘元素之和

每日一道算法题之计算矩阵边缘元素之和 一、题目描述二、思路三、C代码 一、题目描述 题目来源&#xff1a;洛谷 输入一个整数矩阵&#xff0c;计算位于矩阵边缘的元素之和。 所谓矩阵边缘的元素&#xff0c;就是第一行和最后一行的元素以及第一列和最后一列的元素。 C程序要求…

Windows 10中Visual Studio Code(VSCode)无法自动打开终端的解决办法

1.检查设置&#xff1a; 打开VSCode。点击左侧菜单栏的“文件”&#xff08;File&#xff09;。选择“首选项”&#xff08;Preferences&#xff09;。点击“设置”&#xff08;Settings&#xff09;。在搜索框中输入“shell”&#xff0c;然后点击“settings.json”进行编辑。…

学习鸿蒙基础(6)

一、Prop属性 父——>子 单向同步 Prop装饰的变量可以和父组件建立单向的同步关系。Prop装饰的变量是可变的&#xff0c;但是变化不会同步回其父组件。Prop装饰的变量和父组件建立单向的同步关系。Prop变量允许在本地修改&#xff0c;但修改后的变化不会同步回父组件。当父组…

【MATLAB】SVMD_ MFE_SVM_LSTM 神经网络时序预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 SVMD_MFE_SVM_LSTM神经网络时序预测算法结合了单变量分解&#xff08;SVMD&#xff09;、多尺度特征提取&#xff08;MFE&#xff09;、聚类后展开支持向量机&#xff08;SVM&#xff09;…

算法D31 | 贪心算法1 | 455.分发饼干 376. 摆动序列 53. 最大子序和

贪心算法其实就是没有什么规律可言&#xff0c;所以大家了解贪心算法 就了解它没有规律的本质就够了。 不用花心思去研究其规律&#xff0c; 没有思路就立刻看题解。 基本贪心的题目 有两个极端&#xff0c;要不就是特简单&#xff0c;要不就是死活想不出来。 学完贪心之后再…

rhcsa(rh134)

shell 查看用户shell a、如下查看/etc/shells文件列出了系统上所有可用的 shell&#xff08;具体的可用的 shell 列表可能会因不同的红帽版本和配置而有所不同&#xff09; &#xff08;如下图/etc/shells文件包含/bin/tmux并不意味着tmux是一个shell。实际上&#xff0c;/etc/…

CSS:弹性盒子Flexible Box布局

CSS:Flexible Box弹性盒子布局 一、flex布局原理 ​ flex是flexible Box的缩写,意为 ”弹性布局“&#xff0c;用来为盒状模型提供最大的灵活性&#xff0c;任何一个容器都可以指定为flex布局。 当我们的父盒子设置为flex布局之后&#xff0c;子元素的 float 、clear 和 vert…

4核8G服务器并发数多少?性能如何?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…

WPF应用程序使用MVVM模式

文章目录 一、前言二、正文&#xff1a;模式 - WPF应用程序使用MVVM设计模式2.0 一些术语2.1 秩序与混乱2.2 MVVM模式的演变2.3 为何WPF开发者喜爱MVVM2.4 Demo应用程序2.5 路由命令逻辑2.6 ViewModel类层次结构2.7 ViewModelBase类2.8 CommandViewModel类2.9 MainWindowViewMo…

Vueuse:打造高效的 Vue.js 开发利器

Vueuse&#xff1a;打造高效的 Vue.js 开发利器 Vueuse 是一个功能强大的 Vue.js 生态系统工具库&#xff0c;它提供了一系列的可重用的 Vue 组件和函数&#xff0c;帮助开发者更轻松地构建复杂的应用程序。本文将介绍 Vueuse 的主要特点和用法&#xff0c;以及它在 Vue.js 开发…

css - flex布局实现div横向滚动

父盒子&#xff1a; display: flex; //将容器设置为Flex布局。overflow-x: scroll; //设置容器水平方向出现滚动条。white-space: nowrap; //防止项目换行显示。 子盒子&#xff1a; flex: 0 0 auto; //设置项目为固定宽度。width: 200px; //设置项目的宽度。margin-rig…

【Vue的单选按钮不选中已解决亲测】

伙计&#xff0c;你是否因为后台给vue前端已经传入了对应的单选按钮的数据&#xff0c;为啥还是不选中呢&#xff01;&#xff1f; 这个问题实话我百度乐很多都不能解决我的问题&#xff0c;最后机智如我的发现乐vue的自身的问题&#xff0c;后端返回的数据类型如果是数字int类…

Git 指令深入浅出【1】—— 文件管理

Git 指令深入浅出【1】—— 文件管理 一、新建仓库二、配置1. 基本指令2. 免密配置3. 简化指令 三、管理文件1. 常用文件管理指令&#xff08;1&#xff09;基本指令工作区暂存区版本库 &#xff08;2&#xff09;日志&#xff08;3&#xff09;查看修改 2. 版本回退&#xff0…

MySQL基础--10.1--sql查询各科成绩前三名

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 sql查询各科成绩前三名建表造数 方法一&#xff1a;使用加行号的方式查询方法二&#xff1a;使用子查询嵌套查询原理解析考虑并列情况 方法三&#xff1a;窗口函数1…

全面整理!机器学习常用的回归预测模型

Datawhale干货 作者&#xff1a;曾浩龙&#xff0c;Datawhale意向成员 前言 回归预测建模的核心是学习输入 到输出 &#xff08;其中 是连续值向量&#xff09;的映射关系。条件期望 是 到 的回归函数。简单来说&#xff0c;就是将样本的特征矩阵映射到样本标签空间。 图…

Springboot同一台服务器部署多个项目,导致redis混淆,如何根据不同项目区分

在Spring Boot应用中,如果在同一台服务器上部署了多个项目,并且每个项目都使用Redis作为缓存或存储,为了避免Redis数据混淆,你需要确保各个项目在访问Redis时使用不同的数据库索引号、键前缀或者连接配置。 以下是一些区分不同项目Redis数据的方法: 使用不同数据库索引:…

2024.02.28作业

模拟面试 1. 什么是回调函数 将函数作为另一函数的参数 实现&#xff1a;通过函数指针&#xff0c;如线程的创建函数 2. 结构体和共用体的区别 结构体的每个成员都会分配内存&#xff0c;大小为各个成员所占内存之和&#xff0c;内存对齐 共用体的内存以最大成员为主 3. 赋…

2024年 前端JavaScript Web APIs 第一天 笔记

1.1 -声明变量const优先 1.2 -DOM树和DOM对象 1.3 -获取DOIM元素 1.4 -DOM修改元素内容以及年会抽奖 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content&quo…

【linux系统讲解】

linux系统详细介绍 1. linux系统2. 文件内容操作3. 权限和所有权4. 进程管理5. 用户和群组管理6. 系统信息7. 网络操作8. 打包和解压缩9. 软件包管理10. 系统控制 1. linux系统 Linux是一种强大的开源操作系统&#xff0c;被广泛用于服务器、桌面、手机及嵌入式设备&#xff0…

学习Sora技术报告Video generation models as world simulators

原文链接&#xff1a; Video generation models as world simulators (openai.com) 摘要&#xff1a; 我们探索了在视频数据上大规模训练生成模型。具体来说&#xff0c;我们在可变片长、分辨率和纵横比的视频和图像上联合训练文本条件扩散模型text-conditional diffusion mo…