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 13 Python
git进行版本控制心得详谈
Dec 10 Python
Python操作MySQL模拟银行转账
Mar 12 Python
pytorch构建网络模型的4种方法
Apr 13 Python
python发送邮件脚本
May 22 Python
Python高级特性切片(Slice)操作详解
Sep 27 Python
在python中对变量判断是否为None的三种方法总结
Jan 23 Python
不到20行代码用Python做一个智能聊天机器人
Apr 19 Python
PYTHON实现SIGN签名的过程解析
Oct 28 Python
TensorFlow查看输入节点和输出节点名称方式
Jan 04 Python
numpy数据类型dtype转换实现
Apr 24 Python
一劳永逸彻底解决pip install慢的办法
May 24 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将字符串转化成date存入数据库的两种方式
2014/04/28 PHP
WordPress中调试缩略图的相关PHP函数使用解析
2016/01/07 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
Laravel框架基于ajax实现二级联动功能示例
2019/01/17 PHP
javascript或asp实现的判断身份证号码是否正确两种验证方法
2009/11/26 Javascript
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
使用jQuery动态加载js脚本文件的方法
2014/04/03 Javascript
jQuery中last()方法用法实例
2015/01/06 Javascript
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
json格式数据的添加,删除及排序方法
2016/01/21 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
jQuery实现获取隐藏div高度的方法示例
2017/02/09 Javascript
vue.js实例todoList项目
2017/07/07 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
使用Python脚本对Linux服务器进行监控的教程
2015/04/02 Python
Python新手们容易犯的几个错误总结
2017/04/01 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
Python可变对象与不可变对象原理解析
2020/02/25 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
解决django 向mysql中写入中文字符出错的问题
2020/05/18 Python
解决tensorflow读取本地MNITS_data失败的原因
2020/06/22 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
2021/02/20 Python
CSS3实现自定义Checkbox特效实例代码
2017/04/24 HTML / CSS
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
英国著名药妆店:Superdrug
2021/02/13 全球购物
水果连锁超市创业计划书
2014/01/24 职场文书
学历公证委托书
2014/04/09 职场文书
教师师德师风自我剖析材料
2014/09/29 职场文书
python游戏开发之pygame实现接球小游戏
2022/04/22 Python