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 = itemreturn current
Python基础——min/max与np.argmin/np.argmax相关推荐
- np.argmin和argmax
np.argmin(,axis=) 若没有确定axis,则会得到所有元素最小的值的索引,整个索引值是将数组全部转换为一个维度时的位置索引. import numpy as npb = np.rando ...
- python中min(x)是什么意思,Python的min/max的C等价性是什么
我会用var min = pairs.OrderBy(x => x.FirstValue).FirstOrDefault(); 虽然我同意排序比求最小值重,但请注意这是而不是对整个集合进行排序. ...
- 【Python基础】科学计算库Scipy简易入门
0.导语 Scipy是一个用于数学.科学.工程领域的常用软件包,可以处理插值.积分.优化.图像处理.常微分方程数值解的求解.信号处理等问题.它用于有效计算Numpy矩阵,使Numpy和Scipy协同工 ...
- 13,12_基本运算,add/minus/multiply/divide,矩阵相乘mm,matmul,pow/sqrt/rsqrt,exp/log近似值,统计属性,mean,sum,min,max
1.12.基本运算 1.12.1.add/minus/multiply/divide 1.12.2.矩阵相乘mm,matmul 1.12.3.pow/sqrt/rsqrt 1.12.4.exp/log ...
- 理解np.max、np.min、np.argmax、np.argmin以及np.sum中的axis参数
np.max.np.min.np.argmax.np.argmin以及np.sum方法均可设置axis参数,设置axis参数后,对应地,函数方法将沿着axis代表的轴的方向进行相应的数学运算.进行数学 ...
- python中delete怎么用_python删除np.deletePython基础教程05 - 缩进和选择
缩进 Python最具特色的是用缩进来标明成块的代码.我下面以if选择结构来举例.if后面跟随条件,如果条件成立,则执行归属于if的一个代码块. 先看C语言的表达方式(注意,这是C,不是Python! ...
- np.min()和np.argmin()函数用法
np.min()函数用于返回列表中的最小值 np.argmin()函数用于返回一维列表最小值索引或多维列表展平之后的最小值索引 import numpy as np lst1=[1,100,56,78 ...
- [云炬python学习笔记]Numpy中内置函数min(),max(),sum()与Python中内置函数min(),max(),sum()性能对比分析
众所周知,Python有许多内置函数(例如min(),max(),sum()),Numpy也有自己的内置函数(np.min(),np.max(),np.sum()).由于Numpy的函数是在编译码中执 ...
- python import numpy as np_import numpy as np
[判断题]只有 Python 扩展库才需要导入以后才能使用其中的对象, Python 标准库不需要导入即可使用其中的所有对象和方法. [填空题]random 模块中 _____________ 方法的 ...
最新文章
- AI人才招聘:估值超400亿美元,即将IPO的独角兽招AI专家
- Linux进程查看与管理
- (chap5 web服务器) 数据转发之“网关和隧道”
- BUG总结——【构造函数写逻辑】引发的极大的线上问题
- 【Boost】boost库中function的用法
- .NET Core 2.1 容器镜像将从 Docker Hub 中删除
- Java Web的web.xml文件作用及基本配置(转)
- 小程序 ios页面 左右滑动 解决方法
- Python3 爬虫学习笔记 C17【爬虫框架 pyspider — 基本使用】
- 拓端tecdat|R语言用Copulas模型的尾部相依性分析损失赔偿费用
- 从零开始学android:Activity初步
- Theory: If statement(理论:如果语句)
- 华为云数据库跃进式发展
- springboot+vue+elementUI搭建个人博客
- 九龙证券|二股东迎大变革,这只零售股连收4板
- 浅析语音对讲功能在车载监控系统中的应用意义
- 爬虫xx网站论坛的帖子源码分享
- 车辆检测(视觉分类器训练)
- VS2010编译的程序在XP上无运行库执行,以及ADO在XP上报80004003的错误处理
- FPGA IP核 串口实验 signaltap
热门文章
- linux登录vnc的命令行,用VNC远程登陆linux (ZT)
- java用来存储键值的容器是_Java容器 - osc_y0caef0i的个人空间 - OSCHINA - 中文开源技术交流社区...
- mysql语法错误文件_使用logstash同步MySQL的数据时,在jdbc查询sql文件时报sql语法错误,sql文件是navicat生成的...
- word使用中的标题
- 剑指offer面试题12. 矩阵中的路径(矩阵搜索)(深度优先搜索)(剪枝)
- 单例模式及多线程安全(C++版)
- tensorflow精进之路(二十六)——人脸识别(上)(MTCNN原理)
- Linux 平台中调试 C/C++ 内存泄漏方法
- 在blog中显示天气预报、日历、时钟、MSN、QQ在线状态、中国农历
- 一小时学习(一)遍历算法