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将数组的元素导出到变量中(unpacking)
Oct 27 Python
使用Django和Python创建Json response的方法
Mar 26 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
Apr 21 Python
tensorflow: 查看 tensor详细数值方法
Jun 13 Python
Python图像处理之简单画板实现方法示例
Aug 30 Python
python 实现12bit灰度图像映射到8bit显示的方法
Jul 08 Python
Python实现基于SVM的分类器的方法
Jul 19 Python
Python 过滤错误log并导出的实例
Dec 26 Python
pytorch 实现删除tensor中的指定行列
Jan 13 Python
使用Tensorflow将自己的数据分割成batch训练实例
Jan 20 Python
使用Python将图片转正方形的两种方法实例代码详解
Apr 29 Python
Python如何读写字节数据
Aug 05 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版)
2012/08/21 PHP
基于PHP生成静态页的实现方法
2013/05/10 PHP
关于PHP的curl开启问题探讨
2014/04/08 PHP
php使用递归计算文件夹大小
2014/12/24 PHP
使用PHP uniqid函数生成唯一ID
2015/11/18 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
php使用curl实现简单模拟提交表单功能
2017/05/15 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
iis6+javascript Add an Extension File
2007/06/13 Javascript
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
js弹出div并显示遮罩层
2014/02/12 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
jQuery中remove()方法用法实例
2014/12/25 Javascript
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
jQuery 判断图片是否加载完成方法汇总
2015/08/10 Javascript
JQuery Ajax 异步操作之动态添加节点功能
2017/05/24 jQuery
JS中去掉array中重复元素的方法
2017/05/26 Javascript
vue生命周期与钩子函数简单示例
2019/03/13 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
python对list中的每个元素进行某种操作的方法
2018/06/29 Python
深入浅析Python 中 is 语法带来的误解
2019/05/07 Python
python开发入门——列表生成式
2020/09/03 Python
Django实现简单的分页功能
2021/02/22 Python
新西兰购物网站:TheMarket NZ
2020/09/19 全球购物
为什么需要版本控制
2016/10/28 面试题
财务情况说明书范文
2014/05/06 职场文书
2014年十一国庆节活动方案
2014/09/16 职场文书
财务助理岗位职责范本
2014/10/09 职场文书
2015年植树节活动总结
2015/02/06 职场文书
2015年保卫科工作总结
2015/05/14 职场文书
财产分割协议书
2016/03/22 职场文书
vue如何实现关闭对话框后刷新列表
2022/04/08 Vue.js
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers