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中的迭代器和生成器
Oct 26 Python
Python对数据库操作
Mar 28 Python
教你用一行Python代码实现并行任务(附代码)
Feb 02 Python
python如何统计序列中元素
Jul 31 Python
解决Python2.7读写文件中的中文乱码问题
Apr 12 Python
详解Python 协程的详细用法使用和例子
Jun 15 Python
详解Python发送email的三种方式
Oct 18 Python
Python3 读、写Excel文件的操作方法
Oct 20 Python
对python xlrd读取datetime类型数据的方法详解
Dec 26 Python
python ddt数据驱动最简实例代码
Feb 22 Python
PyTorch的深度学习入门之PyTorch安装和配置
Jun 27 Python
python3中celery异步框架简单使用+守护进程方式启动
Jan 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
javascript(jquery)利用函数修改全局变量的代码
2009/11/02 Javascript
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
基于MooTools的很有创意的滚动条时钟动画
2010/11/14 Javascript
javascript语言结构小记(一)
2011/09/10 Javascript
js三种排序算法分享
2012/08/16 Javascript
js加强的经典分页实例
2013/03/15 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
js判断undefined类型示例代码
2014/02/10 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
js实现touch移动触屏滑动事件
2015/04/17 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
AngularJS控制器之间的数据共享及通信详解
2016/08/01 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
详解js动态获取浏览器或页面等容器的宽高
2019/03/13 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
举例详解Python中循环语句的嵌套使用
2015/05/14 Python
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
Python多线程实现同步的四种方式
2017/05/02 Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
2017/12/14 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
有关Python的22个编程技巧
2018/08/29 Python
python跳出双层for循环的解决方法
2019/06/24 Python
pytorch实现对输入超过三通道的数据进行训练
2020/01/15 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
2020/03/17 Python
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
Trunki英国官网:儿童坐骑式行李箱
2017/05/30 全球购物
农村婚礼证婚词
2014/01/10 职场文书
2014年征兵标语
2014/06/20 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书
创业不要错过,这4种餐饮新模式
2019/07/18 职场文书
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python
nginx请求限制配置方法
2021/07/09 Servers
Echarts如何重新渲染实例详解
2022/05/30 Javascript