python数据分析numpy基础之argmax求数组最大值索引

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

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

用法

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

描述

argmax()返回沿指定轴的最大值的索引。

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

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

1.1 入参a

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

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

1.2 入参axis为整数

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

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

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

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

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, 31, 19],[20, 3, 22, 23]]])
# axis默认为None,返回整个数组的最大值的索引
>>> np.argmax(ar3)
11
# ar3最大值为31
>>> np.max(ar3)
31
# 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, 31, 19, 20,  3, 22, 23])
# 最大值多次出现时,返回第一次出现的索引
# 索引为11的值为最大值31,为第一次出现的索引,索引argmax()返回15
>>> ar3.reshape(ar3.size)[11]
31
# 索引为18的值为最大值31
>>> ar3.reshape(ar3.size)[18]
31
# 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.argmax(ar3,axis=0)
array([[0, 0, 1, 0],[0, 0, 1, 1],[1, 0, 1, 0]], dtype=int64)
# max()获取0轴最大值,argmax()获取0轴最大值的索引
# 比如20的索引为(1, 2, 0),取0轴索引1
>>> np.max(ar3,axis=0)
array([[12, 13, 21, 15],[19, 25, 31, 19],[20, 29, 22, 31]])
# axis=1,只返回沿1轴最大值的索引,1轴大小为3,索引只有0,1,2
>>> np.argmax(ar3,axis=1)
array([[1, 2, 1, 2],[2, 1, 1, 2]], dtype=int64)
# 比如29(0, 2, 1),取1轴索引2
>>> np.max(ar3,axis=1)
array([[19, 29, 16, 31],[20, 17, 31, 23]])
# axis=2,只返回沿2轴最大值的索引,2轴大小为4,索引只有0,1,2,3   
>>> np.argmax(ar3,axis=2)
array([[3, 1, 3],[2, 2, 3]], dtype=int64)
# 比如 23(1, 2, 3)),取2轴索引3
>>> np.max(ar3,axis=2)
array([[15, 25, 31],[21, 31, 23]])
# axis=负数,则-1对应最后一个轴,-2倒数第2个轴,依此类推。
>>> np.argmax(ar3,axis=-1)
array([[3, 1, 3],[2, 2, 3]], dtype=int64)

1.3 入参keepdims

numpy.argmax()的入参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, 31, 19],[20, 3, 22, 23]]])
>>> kdnt=np.argmax(ar3,keepdims=True)
>>> kdnf=np.argmax(ar3,keepdims=False)
>>> kdn=np.argmax(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([[[11]]], dtype=int64), 11, 11)
>>> kd0t=np.argmax(ar3,axis=0,keepdims=True)
>>> kd0=np.argmax(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([[[0, 0, 1, 0],[0, 0, 1, 1],[1, 0, 1, 0]]], dtype=int64)
>>> kd0
array([[0, 0, 1, 0],[0, 0, 1, 1],[1, 0, 1, 0]], dtype=int64)
>>> kd1t=np.argmax(ar3,axis=1,keepdims=True)
>>> kd1=np.argmax(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([[[1, 2, 1, 2]],[[2, 1, 1, 2]]], dtype=int64)
>>> kd1
array([[1, 2, 1, 2],[2, 1, 1, 2]], dtype=int64)

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

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

相关文章

Docker技术概论(5):Docker网络

Docker技术概论&#xff08;5&#xff09; Docker网络 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog…

基于QT和Visa的安捷伦(keysight)34970A温度采集

在以前的文章中&#xff0c;描述了如何在labview开发读取34970A仪器采集的温度。 也描述了如何安装keysight IO Libraries Suits. 那么本文更进一步&#xff0c;描述QT平台c语言开发软件&#xff0c;读取34970A仪器采集的温度。 以下是c代码&#xff0c;因为采集耗费时间长&…

C++虚函数调用规则

C虚函数调用规则 基类、派生类结构&#xff1a; class Foo { public:virtual void print() {cout << "Foo" << endl;} }; class Bar : public Foo { public:virtual void print() {cout << "Bar" << endl;} };1.通过对象直接调用…

AcWing 895. 最长上升子序列(线性dp)

问题描述 给定一个长度为N NN的数列&#xff0c;求数值严格单调递增的子序列的长度最长是多少。 输入格式&#xff1a; 第一行包含整数N NN。 第二行包含N NN个整数&#xff0c;表示完整序列。 输出格式&#xff1a; 输出一个整数&#xff0c;表示最大长度。 数据范围 1 ≤…

【C++提高编程】

C提高编程 C提高编程1 模板1.1 模板的概念1.2 函数模板1.2.1 函数模板语法1.2.2 函数模板注意事项1.2.3 函数模板案例1.2.4 普通函数与函数模板的区别1.2.5 普通函数与函数模板的调用规则1.2.6 模板的局限性 1.3 类模板1.3.1 类模板语法1.3.2 类模板与函数模板区别1.3.3 类模板…

备战蓝桥杯---动态规划的一些思想1

话不多说&#xff0c;直接看题&#xff1a; 目录 1.双线程DP 2.正难则反多组DP 3.换个方向思考&#xff1a; 1.双线程DP 可能有人会说直接贪心&#xff1a;先选第1条的最优路径&#xff0c;再选第2条最优路径。 其实我们再选第1条时&#xff0c;我们怎么选会对第2条的路径…

FastJson中“$ref 循环引用检测”的问题

今天在测试时&#xff0c;错误停留在了以下的代码行 Object object new ObjectMapper().readValue(JSON.toJSONString(procInst.getForm()), Object.class); 报错信息&#xff1a;com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field &quo…

linux命令行与shell脚本大全——学习笔记(1-4章)

第一章、第二章 查看运行层级 runlevel 目前有7个层级&#xff0c;3是有联网的多用户模式&#xff0c;5是配有GUI的多用户模式&#xff0c;等等 第三章 启动shell 查看/etc/passwd文件&#xff0c;可以看到每个用户的默认shell程序&#xff0c;如: christine:x:1001:1001:…

面条机水箱低液位提醒功能如何实现

光电液位传感器在面条机水箱低液位功能的实现中发挥着重要作用。该技术通过光学原理和分离式设计&#xff0c;实现了面条机水箱液位的精准检测和智能控制&#xff0c;为面条生产提供了稳定的保障。 采用分离式液位传感器&#xff0c;将菱镜部分设计直接置于面条机水箱上&#…

nvidia a100-pcie-40gb环境安装

1.conda create --name torch_li python3.8 2. conda install pytorch1.7.1 torchvision0.8.2 torchaudio0.7.2 cudatoolkit11.0 -c pytorch 环境测试&#xff1a;torch.cuda.is_available() 3.conda remove -n torch_li --all 4.pip install opencv-python-headless 5.pip ins…

SOCKS55代理与Http代理有何区别?如何选择?

在使用IPFoxy全球代理时&#xff0c;选择 SOCKS55代理还是HTTP代理&#xff1f;IPFoxy代理可以SOCKS55、Http协议自主切换&#xff0c;但要怎么选择&#xff1f;为解决这个问题&#xff0c;得充分了解两种代理的工作原理和配置情况。 在这篇文章中&#xff0c;我们会简要介绍 …

overleaf上传到arxiv 参考文献无法引用(?)

记一下overleaf上传到arxiv的bug 参考文献无法引用&#xff08;&#xff1f;&#xff09; 因为需要上传bbl文件而不是bib 用overleaf生成bbl 另外需要将bbl和txt的文件名设置成一样的

Linux笔记--解压缩

一、tar指令 Linux打包文件通常以.tar结尾&#xff0c;压缩文件以.gz(.bz2)结尾。通常压缩和打包是一起进行的&#xff0c;打包压缩后文件后缀名一般为.tar.gz。 z∶使用gzip进行解压缩 j:使用bzip2进行解压缩 c: create&#xff0c;创建文件 x : extract&#xff0c;解压 v:…

RocketMQ消息积压如何处理

在高并发的场景下&#xff0c;由于消息产生速度超过消费速度&#xff0c;可能会导致消息积压的问题。本文将介绍 RocketMQ 消息积压的原因和如何处理积压问题。 什么是消息积压 消息积压是使用 MQ 消息队列系统中&#xff0c;最常见的一种性能问题。如下图所示&#xff0c;当生…

2、Redis-Hash【常用】

目录 一、Hash和String的区别 二、常用命令与演示 三、Redis中Hash类型应用场景 一、Hash和String的区别 这是String, keyvaluenameTrxcx 这是Hash&#xff0c; keyvaluestudentTrxcxnameTrxcxage21sexmale 可以明显的看出&#xff0c;String的value就是一条数据&#…

手动实现一个简单的 HTTP 请求

本文我们通过 Socket&#xff0c;写一个 HTTP 协议&#xff0c;直观的感受一下上篇文章中的请求和响应。 定义 socket server 通过上篇文章&#xff0c;我们知道 HTTP 协议底层是通过 Socket 实现的&#xff0c;所以我们先通过 socket 定义一个 server import socket#初始化 …

复试PAT乙级day34

1111~1115 1113 很难&#xff0c;看了题解 人类习惯用 10 进制&#xff0c;可能因为大多数人类有 10 根手指头&#xff0c;可以用于计数。这个世界上有一种叫“钱串子”&#xff08;学名“蚰蜒”&#xff09;的生物&#xff0c;有 30 只细长的手/脚&#xff0c;在它们的世界里…

【探索AI】十六 深度学习之第2周:深度神经网络(五)实践与应用

实践与应用 实现步骤 当您想要使用深度学习框架构建简单的深度神经网络并进行训练与评估时&#xff0c;您可以按照以下步骤进行操作&#xff1a; 步骤一&#xff1a;选择深度学习框架 选择您熟悉或希望学习的深度学习框架&#xff0c;比如TensorFlow、PyTorch、Keras等。 …

算法题目跟连系列之“手把手刷链表”

第一道 题目&#xff1a;https://leetcode.cn/problems/partition-list/description/ 86 Partition List 这个题解决的时候&#xff0c;无非就是把链表中小于X的元素摘出来形成一个链表&#xff0c;同时也把大于等于X的元素摘出来形成另外一个链表。最后把这两个链表合并。这个…

卷积神经网络介绍

卷积神经网络(Convolutional Neural Networks&#xff0c;CNN) 网络的组件&#xff1a;卷积层&#xff0c;池化层&#xff0c;激活层和全连接层。 CNN主要由以下层构造而成&#xff1a; 卷积层&#xff1a;Convolutional layer&#xff08;CONV&#xff09;池化层&#xff1a…