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模块restful使用方法实例
Dec 10 Python
Python中遍历字典过程中更改元素导致异常的解决方法
May 12 Python
Python中在脚本中引用其他文件函数的实现方法
Jun 23 Python
Python如何判断数独是否合法
Sep 08 Python
解决Python的str强转int时遇到的问题
Apr 09 Python
用Python解数独的方法示例
Oct 24 Python
Flask项目中实现短信验证码和邮箱验证码功能
Dec 05 Python
python opencv如何实现图片绘制
Jan 19 Python
在python image 中实现安装中文字体
May 16 Python
Python实现一个优先级队列的方法
Jul 31 Python
Python数据类型最全知识总结
May 31 Python
python 管理系统实现mysql交互的示例代码
Dec 06 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判断是否连接上网络的方法实例详解
2016/12/14 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
javascript 检测浏览器类型和版本的代码
2009/09/15 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
js获取url中指定参数值的示例代码
2013/12/14 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
Jquery异步提交表单代码分享
2015/03/26 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
jquery实现具有嵌套功能的选项卡
2016/02/12 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
Python 调用VC++的动态链接库(DLL)
2008/09/06 Python
详解Python中的strftime()方法的使用
2015/05/22 Python
详解Python pygame安装过程笔记
2017/06/05 Python
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
如何使用python进行pdf文件分割
2019/11/11 Python
利用python实现AR教程
2019/11/20 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
pycharm实现在虚拟环境中引入别人的项目
2020/03/09 Python
利用python 下载bilibili视频
2020/11/13 Python
使用OpenCV校准鱼眼镜头的方法
2020/11/26 Python
python使用numpy中的size()函数实例用法详解
2021/01/29 Python
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
医疗保健专业人士购物网站:Scrubs & Beyond
2017/02/08 全球购物
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
李维斯法国官网:Levi’s法国
2019/07/13 全球购物
社区党务公开实施方案
2014/03/18 职场文书
银行求职自荐信
2014/06/30 职场文书
2014年法院工作总结
2014/11/24 职场文书
2014年度工作总结报告
2014/12/15 职场文书
酒店保洁员岗位职责
2015/02/26 职场文书
2019年度行政文员工作计划范本!
2019/07/04 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书