• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python中的np.argmin()和np.argmax()函数用法

    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基础学习之递归函数知识总结
    • python中os.path.join()函数实例用法
    • 浅谈Python中的函数(def)及参数传递操作
    • python 定义函数 返回值只取其中一个的实现
    • python print()函数的end参数和sep参数的用法说明
    • python处理emoji表情(两个函数解决两者之间的联系)
    • Python基础学习之简单理解函数
    上一篇:python之np.argmax()及对axis=0或者1的理解
    下一篇:从np.random.normal()到正态分布的拟合操作
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Python中的np.argmin()和np.argmax()函数用法 Python,中的,np.argmin,和,np.argmax,