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实现哈希表
Feb 07 Python
Python SQLite3数据库操作类分享
Jun 10 Python
在Python的Django框架中编写编译函数
Jul 20 Python
教你用Python脚本快速为iOS10生成图标和截屏
Sep 22 Python
Python socket套接字实现C/S模式远程命令执行功能案例
Jul 06 Python
python实现遍历文件夹修改文件后缀
Aug 28 Python
Python3.7 pyodbc完美配置访问access数据库
Oct 03 Python
python实现七段数码管和倒计时效果
Nov 23 Python
PyQt5中多线程模块QThread使用方法的实现
Jan 31 Python
Python bisect模块原理及常见实例
Jun 17 Python
使用python求斐波那契数列中第n个数的值示例代码
Jul 26 Python
Python 线程池模块之多线程操作代码
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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
PHP读写文件的方法(生成HTML)
2006/11/27 PHP
php实现cookie加密的方法
2015/03/10 PHP
ThinkPHP 3.2.2实现事务操作的方法
2017/05/05 PHP
PHP+MySQL实现消息队列的方法分析
2018/05/09 PHP
php中错误处理操作实例分析
2019/08/23 PHP
Prototype源码浅析 Enumerable部分之each方法
2012/01/16 Javascript
jquery使用$(element).is()来判断获取的tagName
2014/08/24 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
2017/09/19 jQuery
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
微信小程序获取公众号文章列表及显示文章的示例代码
2020/03/10 Javascript
[05:28]刀塔密之一:团结则存
2014/07/03 DOTA
Django 表单模型选择框如何使用分组
2019/05/16 Python
QML用PathView实现轮播图
2020/06/03 Python
RentCars.com巴西:汽车租赁网站
2016/08/22 全球购物
BOSE德国官网:尽探索之力,享音乐之极
2016/12/11 全球购物
香港零食网购:上仓胃子
2020/06/08 全球购物
.NET程序员的几道面试题
2012/06/01 面试题
会计毕业生自我鉴定
2013/11/04 职场文书
园林毕业生自我鉴定范文
2013/12/29 职场文书
预备党员党课思想汇报
2014/01/13 职场文书
清华大学自主招生自荐信
2014/01/29 职场文书
教室标语大全
2014/06/21 职场文书
电气自动化求职信
2014/06/24 职场文书
2015年暑期社会实践报告
2015/07/13 职场文书
聘用合同范本
2015/09/21 职场文书
mysql的单列多值存储实例详解
2022/04/05 MySQL
Python可视化神器pyecharts绘制地理图表
2022/07/07 Python