Python中的np.argmin()和np.argmax()函数用法
作者:JZJZY 发布时间:2021-09-10 16:00:51
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
来源:https://hnuysylps.blog.csdn.net/article/details/103190408


猜你喜欢
- Go 搭建一个简单 WebSocket 服务端代码例子 test.go, 如下:package mainimport ( "fmt
- 删除列表中元素的方法有三种:1. del命令使用del命令能够删除列表中指定位置上的元素,也可以删除整个列表。2. pop( )方法使用列表
- 由于一些读者对于960 Grid System CSS Framework的原理和使用方法比较感兴趣,暴风彬彬今天将和大家一同分享这篇关于9
- 本文实例讲述了mysql 设置自动创建时间及修改时间的方法。分享给大家供大家参考,具体如下:第一种,通过ddl进行定义CREATE TABL
- 天猫将商品加入购物车会有一个抛物线动画,告诉用户操作成功以及购物车的位置,业务中需要用到类似的效果,记录一下实现过程备忘,先上demo&nb
- buffer:下载数据缓冲区,以字节为单位,缺省依赖操作系统 consistent:下载期间所涉及的数据保持read only,缺省为n d
- 有一个txt文本如下:151 151 1234561 156421 214156 1523132 031320现希望将两行合并为一行,并将
- 摘要:利用xlrd读取excel利用xlwt写excel利用xlutils修改excel利用xlrd读取excel先需要在命令行中pip i
- 问题你想改变对象实例的打印或显示输出,让它们更具可读性。解决方案要改变一个实例的字符串表示,可重新定义它的 __str__() 和 __re
- 导言:当向类型化的数据集(Typed DataSet)添加一个TableAdapter时,相应的DataTable的构架已经由TableAd
- 网上给出了各种方法,都无碍乎先切换到Python脚本所在目录,然后输入Python脚本名称并回车,本文这里给出了更简便的方法。方法一:进入P
- gitignore是什么文件就是git软件要忽略的文件列表,如果要忽略某些文件,,在Git工作区的根目录下创建一个特殊的.gitignore
- 1、为什么要掌握进程间通信python的多线程代码效率由于受制于GIL,不能利用多核CPU来加速,而多进程方式可以绕过GIL, 发挥多CPU
- 在IE比较简单,大家都知道用setHomePage来设置,懒人写法:<a href="#setHomePage"
- XML 的使用越来越广泛,但是很多 XML 的结构并不好。即便结构良好,也常常设计得很糟,使得处理和维护非常困难。而大部分用于 XML 的基
- 上段时间,团队内部有过好几次几次给力的分享,这里对西风师傅分享的继承机制稍作整理一下,适当加了写口语化的描述,留作备案。一、讲个故事吧澄清在
- 下载编译器protoc两种方式:1、使用google官方protoc下载地址:https://github.com/google/proto
- 本文实例为大家分享了python实现记事本功能的具体代码,供大家参考,具体内容如下1. 案例介绍tkinter 是 Python下面向 tk
- 该语句的作用是:启用或禁用错误处理程序。一般用法如下:On Error Resume NextOn Error GoTo 0如果在您的代码中
- 类型主要针对文本属性进行定义。理解“编辑字体列表”和“行高”。二、CSS规则定义之“背景”·背景有背景颜色和背景图像的选择设置。·利于背景图