首页
高薪实战项目班
new
Linux云计算SRE
Python全能开发
云原生微服务实战
go高并发实战
网络安全攻防渗透
DevOps项目实战
华为鸿蒙NEXT培训
AIGC大模型应用开发
AI大模型微调
AIGC大模型应用实战
Rust工程师进阶实战
考试认证
hot
阿里云认证
RHCE
CKA/CKS
CISP
Nginx
软考-高级系统分析师
软考-高级系统规划管理师
软考-高级系统架构与设计师
技术学习教程
Linux云计算实战
python学习教程
网络安全
go开发实战
云原生及微服务
大数据学习
数据库
免费试学
就业喜讯
马哥教育动态
马哥头条
企业名师
一线企业教练
开课动态
就业喜讯
行业合作
产品升级
校企合作
官方支付通道
马哥教育官网
首页
技术干货
Linux云计算
Numpy怎么使用最高效,5个技巧送给你!
Linux云计算
,
技术干货
,
马哥教育快报
2021年4月19日 上午10:30
4519
本文作者将分享 5 个优雅的 Python Numpy 函数,有助于高效、简洁的数据处理。
在 reshape 函数中使用参数-1
Numpy 允许我们根据给定的新形状重塑矩阵,新形状应该和原形状兼容。有意思的是,我们可以将新形状中的一个参数赋值为-1。这仅仅表明它是一个未知的维度,我们希望 Numpy 来算出这个未知的维度应该是多少:Numpy 将通过查看数组的长度和剩余维度来确保它满足上述标准。让我们来看以下例子:
维度为-1 的不同 reshape 操作图示。
假设我们给定行参数为 1,列参数为-1,那么 Numpy 将计算出 reshape 后的列数为 8。
假设我们给定行参数为-1,列参数为 1,那么 Numpy 将计算出 reshape 后的行数为 8。
下面的代码也是一样的道理。
这也适用于任何更高维度张量的 reshape,但是只有一个维度的参数能赋值为-1。
如果我们尝试 reshape 不兼容的形状或者是给定的未知维度参数多于 1 个,那么将会报错。
总而言之,当试图对一个张量进行 reshape 操作时,新的形状必须包含与旧的形状相同数量的元素,这意味着两个形状的维度乘积必须相等。当使用 -1 参数时,与-1 相对应的维数将是原始数组的维数除以新形状中已给出维数的乘积,以便维持相同数量的元素。
Argpartition:
在数组中找到最大的 N 个元素。
Numpy 的 argpartion 函数可以高效地找到 N 个最大值的索引并返回 N 个值。在给出索引后,我们可以根据需要进行值排序。
Clip:
如何使数组中的值保持在一定区间内
在很多数据处理和算法中(比如强化学习中的 PPO),我们需要使得所有的值保持在一个上下限区间内。Numpy 内置的 Clip 函数可以解决这个问题。Numpy clip () 函数用于对数组中的值进行限制。给定一个区间范围,区间范围外的值将被截断到区间的边界上。例如,如果指定的区间是 [-1,1],小于-1 的值将变为-1,而大于 1 的值将变为 1。
Clip 示例:限制数组中的最小值为 2,最大值为 6。
Extract:
从数组中提取符合条件的元素
我们可以使用 Numpy extract () 函数从数组中提取符合条件的特定元素。
同样地,如果有需要,我们可以用 AND 和 OR 组合的直接条件,如下所示:
setdiff1d:
如何找到仅在 A 数组中有而 B 数组没有的元素
返回数组中不在另一个数组中的独有元素。这等价于两个数组元素集合的差集。
小结
以上 5 个 Numpy 函数并不经常被社区使用,但是它们非常简洁和优雅。在我看来,我们应该尽可能在出现类似情况时使用这些函数,不仅因为代码量更少,更因为它们是解决复杂问题的绝妙方法。
选自TowardsDataScience,作者:Baijayanta Roy
机器之心编译
(侵删)
相关新闻
【Linux面试真题】- 如何查看系统都开启了哪些端⼝?
Ubuntu宣布将放弃 32 位系统+苹果回应大数据杀熟:都是开发者干的【马哥新闻快报-249期】
Python编程中是如何连接List的?
“不限量”套餐被叫停:“不限量”已被“放心用”等取代【马哥教育新闻快报286期】
【Linux面试真题】- 如何修改Linux启动级别为字符模式并永久生效,如何临时、永久关闭selinux及防火墙,请分别写出操作方法。
Bash 的配置文件
【马哥教育早报-017期】移动无限流量套餐上线
【马哥教育晚报-108期】当我们看苹果发布会时,到底在看什么?份子钱一月工资都不够
使用 Go 实现 TLS socket server
十分钟完成Bash 脚本进阶!列举Bash经典用法及其案例
历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、网络安全、云原生、Go、Python开发专业人才培训机构!