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随机生成指定长度密码的方法
Apr 04 Python
python在不同层级目录import模块的方法
Jan 31 Python
Python实现的基数排序算法原理与用法实例分析
Nov 23 Python
利用numpy和pandas处理csv文件中的时间方法
Apr 19 Python
深入flask之异步非堵塞实现代码示例
Jul 31 Python
Python实现App自动签到领取积分功能
Sep 29 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
Aug 12 Python
Python3进制之间的转换代码实例
Aug 24 Python
Python实现变声器功能(萝莉音御姐音)
Dec 05 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
Jul 20 Python
接口自动化多层嵌套json数据处理代码实例
Nov 20 Python
python3.7.2 tkinter entry框限定输入数字的操作
May 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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
php 小乘法表实现代码
2009/07/16 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
2014/07/14 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
PHP查看SSL证书信息的方法
2016/09/22 PHP
node.js中的querystring.stringify方法使用说明
2014/12/10 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
jquery.serialize() 函数语法及简单实例
2016/07/08 Javascript
js中遍历对象的属性和值的方法
2016/07/27 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
jquery操作select取值赋值与设置选中实例
2017/02/28 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
独立部署小程序基于nodejs的服务器过程详解
2019/06/24 NodeJs
在layui中select更改后生效的方法
2019/09/05 Javascript
[50:50]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第一场 12.10
2020/12/13 DOTA
Python实现网站文件的全备份和差异备份
2014/11/30 Python
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
详解Python正则表达式re模块
2019/03/19 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
Python 单例设计模式用法实例分析
2019/09/23 Python
Pytorch 实现数据集自定义读取
2020/01/18 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
Python3自定义json逐层解析器代码
2020/05/11 Python
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
经济实惠的名牌太阳镜和眼镜:Privé Revaux
2021/02/07 全球购物
DBA的职责都有哪些
2012/05/16 面试题
自我鉴定四大框架
2014/01/17 职场文书
幼儿园教师个人反思
2014/01/30 职场文书
新员工入职感言
2014/02/01 职场文书
会计学自荐信
2014/06/03 职场文书
商场促销活动策划方案
2014/08/18 职场文书
重点工程汇报材料
2014/08/27 职场文书