Python中的np.argmin()和np.argmax()函数用法


Posted in Python onJune 02, 2021

Python np.argmin()和np.argmax()函数

按照axis的要求返回最小的数/最大的数的下标

numpy.argmin(a, axis=None, out=None)
numpy.argmax(a, axis=None, out=None)

a:传入一个数组,

axis:默认将输入数组展平,否则,按照axis方向

out:可选

import numpy as np
a = np.arange(6).reshape(2, 3)
a
array([[0, 1, 2],
       [3, 4, 5]])

# 此时自动展平了
np.argmin(a)
0
np.argmax(a)
5
# 在axis方向上找最小的值并返回坐标
np.argmin(a, axis=1)
array([0, 0], dtype=int64)

# 在axis方向上找最大的值并返回坐标
np.argmax(a, axis=1)
array([2, 2], dtype=int64)

当有多个最小值的时候只显示第一个

a = np.arange(6)
a[4] = 0
a

array([0, 1, 2, 3, 0, 5])

np.argmin(a)
0

Python基础——min/max与np.argmin/np.argmax

这里应该是拿min/max(更适合处理可迭代对象,可选的参数是key=func)与np.min/np.max(可适合处理numpy.ndarray对象,可选的参数是axis=0或者1)作比较,只不过np.argmin/np.argmax的用法与np.min/np.max相似,这里就不进行更正了。

首先min/max与np.argmin/np.argmax函数的功能不同

前者返回值,后者返回最值所在的索引(下标)

处理的对象不同

前者跟适合处理list等可迭代对象,而后者自然是numpy里的核心数据结构ndarray(多维数组)

min/max是python内置的函数

np.argmin/np.argmax是numpy库中的成员函数

接口不同

min(iterable, key=func)->value
np.argmin(a, axis=None)

常见的接口如上所示,前者除了一个可迭代对象外,还接收一个函数对象(keyword argument),用于指定比较的对象(也即最值比较的内容是,将迭代对象中的元素逐个赋予func函数对象所得到返回值),可见func只可接受一个参数,如min(dict, key=dict.get)。

而np.argmax更多的是进行轴上的比较(axis=0,也是默认的轴,是列向)

>>> l = ['1', '100', '111', '2']
>>> max(l)
'2'
# 下面我们指定比较内容
>>> max(l, key=lambda x: int(x)
'111'
>>> max(l, key=lambda x: len(x))
'100'
>>> max(l, key=lambda x: len(x) and int(x))
'111'

我们也可将min/max作用于list of lists(这里不对tuple和list作区分):

>>> ll = [(1, 'a'), (3, 'c'), (4, 'e'), (-1, 'z')]
>>> max(ll)

例如根据列表中的每一个元素(tuple或者list类型)的第二位进行求最大值:

>>> l = [(1, 2, 5), (2, 3, 5), (3, 2, 5), (4, 4, 5), (5, 1, 5)]
>>> max(l, key=lambda x: x[1])
(4, 4, 5)
>>> l.index(max(l, key=lambda x: x[1]))
3

默认情况下,max首先进行比较的是items(k,v)中的第一个内容(也即是k),相等的情况下,再进行v的比较。

稍作修改,我们便可实现对v的比较:

>>> max(ll, key=lambda x: x[1])
(-1, 'z')

有时可能最值所在的下标对我们更重要,我们据此下标索引更为丰富的信息。如何不显式转化为numpy.ndarray类型(有时也无法转换,当异质容器时)不通过np.argmax这样的函数获得最值(任何值都可以)所在的下标呢?使用list(tuple)的index()成员函数。

>>> ll = [(1, 'a'), (3, 'c'), (4, 'e'), (-1, 'z')]
>>> val = max(ll, lambda x: x[1])
>>> ll.index(val)
3

根据以上用法,我们也可推测并实现一个精简版的max函数:

def max(items, key=lambda x: x):
    current = items[0]
    for item in items:
        if key(item) > key(current):
            current = item
    return current

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python Django连接MySQL数据库做增删改查
Nov 07 Python
在Django的通用视图中处理Context的方法
Jul 21 Python
Python中import导入上一级目录模块及循环import问题的解决
Jun 04 Python
Django视图和URL配置详解
Jan 31 Python
基于PyQt4和PySide实现输入对话框效果
Feb 27 Python
python 列表中[ ]中冒号‘:’的作用
Apr 30 Python
python 整数越界问题详解
Jun 27 Python
Python K最近邻从原理到实现的方法
Aug 15 Python
python输出带颜色字体实例方法
Sep 01 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
Oct 17 Python
Python跑循环时内存泄露的解决方法
Jan 13 Python
Python创建简单的神经网络实例讲解
Jan 04 Python
python之np.argmax()及对axis=0或者1的理解
Python import模块的缓存问题解决方案
Jun 02 #Python
Python3 类型标注支持操作
Jun 02 #Python
python 实现两个变量值进行交换的n种操作
聊聊Python中关于a=[[]]*3的反思
python内置进制转换函数的操作
Jun 02 #Python
Python 内置函数速查表一览
Jun 02 #Python
You might like
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
2016/03/23 PHP
PHP与Java对比学习日期时间函数
2016/07/03 PHP
ZendFramework框架实现连接两个或多个数据库的方法
2016/12/08 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
2019/09/16 PHP
js如何取消事件冒泡
2013/09/23 Javascript
JavaScript采用递归算法计算阶乘实例
2015/08/04 Javascript
JavaScript表单验证实例之验证表单项是否为空
2016/01/10 Javascript
jQuery遍历json的方法(推荐)
2016/06/12 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
2016/08/02 Javascript
关于Bootstrap按钮组件消除黄框的方法
2017/05/19 Javascript
Vue.js实现微信过渡动画左右切换效果
2017/06/13 Javascript
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
React学习笔记之高阶组件应用
2018/06/02 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
2018/09/19 Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
2018/09/28 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
2019/11/12 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
2020/11/05 Javascript
[00:32]2018DOTA2亚洲邀请赛Liquid出场
2018/04/03 DOTA
Python常见文件操作的函数示例代码
2011/11/15 Python
python基础教程之类class定义使用方法
2014/02/20 Python
Python学习笔记之变量、自定义函数用法示例
2019/05/28 Python
python字符串中匹配数字的正则表达式
2019/07/03 Python
python 实现兔子生兔子示例
2019/11/21 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
python获取linux系统信息的三种方法
2020/10/14 Python
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
捐款倡议书范文
2014/02/02 职场文书
协议书样本
2014/04/23 职场文书
护士长竞聘演讲稿
2014/04/30 职场文书
留学推荐信范文
2014/05/10 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书
python playwright之元素定位示例详解
2022/07/23 Python