Python 官方文档:入门教程 => 点击学习
np.argmin()和np.argmax()函数怎么在python中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python np.argmin()和np.argm
np.argmin()和np.argmax()函数怎么在python中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
按照axis的要求返回最小的数/最大的数的下标
numpy.argmin(a, axis=None, out=None)numpy.argmax(a, axis=None, out=None)
a
:传入一个数组,
axis
:默认将输入数组展平,否则,按照axis方向
out
:可选
import numpy as npa = np.arange(6).reshape(2, 3)aarray([[0, 1, 2], [3, 4, 5]])# 此时自动展平了np.argmin(a)0np.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] = 0aarray([0, 1, 2, 3, 0, 5])np.argmin(a)0
这里应该是拿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)->valuenp.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
关于np.argmin()和np.argmax()函数怎么在Python中使用问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网Python频道了解更多相关知识。
--结束END--
本文标题: np.argmin()和np.argmax()函数怎么在Python中使用
本文链接: https://lsjlt.com/news/278904.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0