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基于pillow判断图片完整性的方法
Sep 18 Python
Python中的默认参数实例分析
Jan 29 Python
Python3.6实现连接mysql或mariadb的方法分析
May 18 Python
pandas.dataframe按行索引表达式选取方法
Oct 30 Python
python3实现带多张图片、附件的邮件发送
Aug 10 Python
使用虚拟环境打包python为exe 文件的方法
Aug 29 Python
Python 3.8 新功能来一波(大部分人都不知道)
Mar 11 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
Apr 21 Python
python如何保存文本文件
Jun 07 Python
利用Python的folium包绘制城市道路图的实现示例
Aug 24 Python
python 用opencv实现霍夫线变换
Nov 27 Python
python 如何在list中找Topk的数值和索引
May 20 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
GD输出汉字的函数的分析
2006/10/09 PHP
php打造属于自己的MVC框架
2012/03/07 PHP
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
PHP读取RSS(Feed)简单实例
2014/06/12 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
2014/09/22 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
php实现将HTML页面转换成word并且保存的方法
2016/10/14 PHP
总结AJAX相关JS代码片段和浏览器模型
2007/08/15 Javascript
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
2010/03/05 Javascript
javascript将相对路径转绝对路径示例
2014/03/14 Javascript
Javascript编程之继承实例汇总
2015/11/28 Javascript
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
vue组件间通信子与父详解(二)
2017/11/07 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
vue初始化动画加载的实例
2018/09/01 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
JavaScript事件冒泡机制原理实例解析
2020/01/14 Javascript
python实现rest请求api示例
2014/04/22 Python
学习python类方法与对象方法
2016/03/15 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
python在新的图片窗口显示图片(图像)的方法
2019/07/11 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
Python 最强编辑器详细使用指南(PyCharm )
2019/09/16 Python
Django model class Meta原理解析
2020/11/14 Python
HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
2014/05/08 HTML / CSS
美国领先的家庭智能音响系统品牌:Sonos
2018/07/20 全球购物
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
给老婆的搞笑检讨书
2014/01/12 职场文书
志愿者活动总结报告
2014/06/27 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
工作经历证明范本
2015/06/15 职场文书
拔河比赛队名及霸气口号
2015/12/24 职场文书
高二数学教学反思
2016/02/18 职场文书