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将多个文本文件合并为一个文本的代码(便于搜索)
Mar 13 Python
python使用百度翻译进行中翻英示例
Apr 14 Python
Python 详解基本语法_函数_返回值
Jan 22 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
Jul 06 Python
python机器学习之贝叶斯分类
Mar 26 Python
Python文件读写常见用法总结
Feb 22 Python
python实现雪花飘落效果实例讲解
Jun 18 Python
在linux下实现 python 监控usb设备信号
Jul 03 Python
在Keras中利用np.random.shuffle()打乱数据集实例
Jun 15 Python
Python编写memcached启动脚本代码实例
Aug 14 Python
pandas:get_dummies()与pd.factorize()的用法及区别说明
May 21 Python
PyTorch device与cuda.device用法
Apr 03 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程序
2006/10/09 PHP
PHP+jQuery+Ajax实现用户登录与退出
2015/04/27 PHP
基于PHP给大家讲解防刷票的一些技巧
2015/11/18 PHP
PHP接口并发测试的方法(推荐)
2016/12/15 PHP
PHP并发查询MySQL的实例代码
2017/08/09 PHP
PHP判断是否是微信打开还是浏览器打开的方法
2019/02/27 PHP
javascript 动态调整图片尺寸实现代码
2009/12/28 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
2016/10/11 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
js如何找出字符串中的最长回文串
2018/06/04 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
Vue-CLI3.x 设置反向代理的方法
2018/12/06 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
2019/01/24 Javascript
Vue的双向数据绑定实现原理解析
2020/02/17 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
2020/09/21 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
Python切片用法实例教程
2014/09/08 Python
Python使用pickle模块存储数据报错解决示例代码
2018/01/26 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
PyTorch上实现卷积神经网络CNN的方法
2018/04/28 Python
Django实现微信小程序支付的示例代码
2020/09/03 Python
matplotlib自定义鼠标光标坐标格式的实现
2021/01/08 Python
美国批发零售网站:GearXS
2016/07/26 全球购物
墨尔本照明批发商店:Mica Lighting
2017/12/28 全球购物
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
建筑公司文秘岗位职责
2013/11/29 职场文书
计算机求职信
2014/07/02 职场文书
质检员岗位职责范本
2015/04/07 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
父母教会我观后感
2015/06/17 职场文书
php微信小程序解包过程实例详解
2021/03/31 PHP