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装饰器decorator介绍
Nov 21 Python
python中列表元素连接方法join用法实例
Apr 07 Python
python清除字符串里非数字字符的方法
Jul 02 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
Apr 17 Python
对python实现模板生成脚本的方法详解
Jan 30 Python
python路径的写法及目录的获取方式
Dec 26 Python
Python imutils 填充图片周边为黑色的实现
Jan 19 Python
Python的PIL库中getpixel方法的使用
Apr 09 Python
浅谈如何使用python抓取网页中的动态数据实现
Aug 17 Python
如何使用python写截屏小工具
Sep 29 Python
Python实现邮件发送的详细设置方法(遇到问题)
Jan 18 Python
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
Jun 22 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调用C代码的实现方法
2014/03/11 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
2014/11/28 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
2018/05/23 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
简单JS代码压缩器
2006/10/12 Javascript
jQuery 动画弹出窗体支持多种展现方式
2010/04/29 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
JS下载文件|无刷新下载文件示例代码
2014/04/17 Javascript
按钮接受回车事件的三种实现方法
2014/06/06 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
Kindeditor在线文本编辑器如何过滤HTML
2016/04/14 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
2016/05/18 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
AngularJS constant和value区别详解
2017/02/28 Javascript
nodejs之get/post请求的几种方式小结
2017/07/26 NodeJs
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
vue单页应用在页面刷新时保留状态数据的方法
2018/09/21 Javascript
Jquery实现无缝向上循环滚动列表的特效
2019/02/13 jQuery
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
Python Web框架Flask下网站开发入门实例
2015/02/08 Python
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
python实现稀疏矩阵示例代码
2017/06/09 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
numpy创建单位矩阵和对角矩阵的实例
2019/11/29 Python
手动安装python3.6的操作过程详解
2020/01/13 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
python使用bs4爬取boss直聘静态页面
2020/10/10 Python
AOP的定义以及作用
2013/09/08 面试题
.NET remoting的两种通道是什么
2016/05/31 面试题
管理学专业个人求职信范文
2013/09/21 职场文书
大学生村官座谈会发言材料
2014/05/25 职场文书
2016年11月份红领巾广播稿
2015/12/21 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
MySQL去除重叠时间求时间差和的实现
2021/08/23 MySQL
python中redis包操作数据库的教程
2022/04/19 Python