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遍历目录中的所有文件的方法
Jul 08 Python
Python之re操作方法(详解)
Jun 14 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
Jun 14 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
Feb 21 Python
PyQt5实现下载进度条效果
Apr 19 Python
python抓取京东小米8手机配置信息
Nov 13 Python
Python3常用内置方法代码实例
Nov 18 Python
Pytorch之parameters的使用
Dec 31 Python
Python简单实现区域生长方式
Jan 16 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
Apr 22 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
Jun 03 Python
Python学习之异常中的finally使用详解
Mar 16 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
PHP5.2下chunk_split()函数整数溢出漏洞 分析
2007/06/06 PHP
更改localhost为其他名字的方法
2014/02/10 PHP
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
jQuery解析XML文件同时动态增加js文件的方法
2015/06/01 Javascript
果断收藏9个Javascript代码高亮脚本
2016/01/06 Javascript
input点击后placeholder中的提示消息消失
2016/01/15 Javascript
js时间比较 js计算时间差的简单实现方法
2016/08/26 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
AJAX和jQuery动态加载数据的实现方法
2016/12/05 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
js保留两位小数方法总结
2018/01/31 Javascript
浅谈Angular 的变化检测的方法
2018/03/01 Javascript
axios封装,使用拦截器统一处理接口,超详细的教程(推荐)
2019/05/02 Javascript
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
js针对图片加载失败的处理方法分析
2019/08/24 Javascript
vue实现购物车的监听
2020/04/20 Javascript
Node.js API详解之 dns模块用法实例分析
2020/05/15 Javascript
[13:25]VP vs VICI (BO3)
2018/06/07 DOTA
python 删除指定时间间隔之前的文件实例
2018/04/24 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
2020/03/23 Python
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
我们是伦敦女孩:WalG
2018/01/08 全球购物
GafasWorld西班牙:购买太阳镜、眼镜和隐形眼镜
2019/09/08 全球购物
分公司经理岗位职责
2013/11/11 职场文书
剪枝的学问教学反思
2014/02/07 职场文书
目标责任书格式
2014/07/28 职场文书
个人违纪检讨书
2014/09/15 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
通讯稿范文
2015/07/22 职场文书
民间借贷纠纷起诉书
2015/08/03 职场文书
安全生产标语口号
2015/12/26 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript
Pytorch中expand()的使用(扩展某个维度)
2022/07/15 Python