掌握 NumPy:初始化方式、Ndarray 操作和函数
已发表: 2021-01-05Numpy 是一个 Python 包,它允许对高维数据以高效和抽象的功能执行数学和数值运算。 在为特定业务用例构建机器学习解决方案时,以使预处理变得容易且结果可解释的方式转换数据变得非常重要。 Numpy 是核心库,它可以以最佳方式执行所有相关功能。
目录
为什么选择 NumPy?
其他数据科学库,如 Pandas、Matplotlib 和 Scikit-learn,是基于 Numpy 构建的,因为它具有高性能。 这个库提供了 ndarray 来代替内置的 python 列表。 Python list 非常适合存储值,但它的代价是增加了执行时间,因为它存储了内存位置的指针,这增加了内存和执行方面的开销。
Numpy 在图像处理领域发现了它的直接用途,其中图像被处理为高多维矩阵以执行各种变换,例如模糊、颜色变化和对象检测。
让我们看一下每个数据科学有志者应该知道的一些重要的 Numpy 函数,但在此之前:
- 下面的所有函数代码都假设该库已使用别名 np 导入,即 import numpy as np.
- 在此之后,术语“数组”将用于定义 ndarray。
不同的初始化方式
1. 线性间隔
此函数旨在提供值范围内的线性间隔数组。 函数 np.linspace(start, stop, num) 其中 start 和 stop 定义值的范围, num 定义样本的数量,返回均匀间隔的值,而 np.arange(start, stop, step) 返回不同的值步值。
2. 特殊价值观
在许多情况下,您可能希望使用诸如 1、0、恒等值或常量值之类的值来初始化大型矩阵。 数组的大小作为元组传递。 Numpy 通过不同的功能促进了这一点:
- np.zeros(size):元素为零
- np.ones(size): 元素是个
- np.full(size, constant value):元素是常量值传递。
- np.eye(size):对角线元素为 1,其余为 0。 这是单位矩阵。
- np.empty(size): 空矩阵
- np.random.random(size):随机值矩阵被初始化为指定大小。
阅读:Numpy 面试问题
Ndarray 操作
这个库的主要目的是不同数组之间的高效计算。 Numpy 支持几乎所有类型的逐元素应用的数学运算和操作。 下面列出了其中的一些(假设两个大小相同的数组 A 和 B 用随机值初始化):
1. 数学
- np.add(A, B):加法
- np.subtract(A, B):减法
- np.divide(A, B):除法
- np.multiply(A, B):乘法
- np.exp(A):指数值
- np.sqrt(A):平方根值
- np.sin(A), cos(A), tan(A):三角函数值
- np.log(A):对数值
- np.percentile(A, percentile required, axis):在传递百分位值时,例如 50,函数将返回数组的第 50 个百分位。
- A.dot(B):返回数组的点积
- A == B:元素比较
- np.array_equal(A, B):数组比较
- A.sum():所有元素的总和
- A.min(), max():最小值和最大值
- A.cumsum():数组元素的累积和
- A.corrcoef():相关系数
2. 操作
- np.transpose(A) 或 AT:矩阵的转置
- A.ravel():展平数组
- A.reshape(new_shape):对数组进行整形(这里直接传递大小而不放入元组)。 新尺寸应与
- A.resize(size):将数组的形状更改为任意形状,并丢弃不属于这个新形状的其他元素。
- np.concatenate((A,B),轴= 1或0)
- np.vstack((A,B)):垂直堆叠数组(逐行)
- np.hstack((A,B)):水平堆栈
退房:Numpy vs Panda:两者的区别

杂项功能
- np.where():这是一个基本函数,它消除了对 if-else 语句的需求。 它需要 3 个重要参数:条件、条件是否满足的值和不满足的值。 一个简单的例子是当您必须根据给定阈值对列进行二值化时。
- np.intersect1d():此函数返回两个一维数组的交集。 这意味着这些数组的公共值由该函数返回。 如果传递的数组不是一维的,那么它会被展平。
- np.allclose():这是一个有趣的函数。 在某些情况下,您可以在比较数组时承受一定程度的容差,或者您想发现相似的数组。 这个函数接受你想要的数组和公差值。 例如:
- arr1 = np.array([1,2,3,4])
- arr2 = np.array([2,3,4,5])
- np.allclose(arr1, arr2, 0.5) :将返回 False
- np.allclose(arr1, arr2, 1): 将返回 True
- argmin()、argmax() 和 argsort():顾名思义,这些函数返回各自名称的索引。 A.argmin() 返回最小元素索引,A.argmax() 相反,A.argsort() 返回排序数组的索引。 在结果取决于索引的情况下,这些函数可以派上用场。
- np.clip():用于转换特定范围内的值。 例如,如果一个数组的值介于 1 到 30 之间,并且您想要 14 到 27 之间的值而不丢失其他值,则此函数会将小于 19 的值放大到 19,并将大于 27 的值缩小到 27。
结论
对 numpy 数组进行操作时还有更多功能,但这些是最常用的功能。 应用于 Pandas 列或系列的操作实际上是在 ndarray 上,因为该系列是一维 ndarray。
Numpy 是一个很好的工具,可以生成假数据以测试特定算法或模拟场景。 它广泛用于计算机视觉应用中,其中图像被转换为多维矩阵以执行所需的操作,或者在深度学习中,神经网络权重由这些 ndarray 保存。
如果您想了解数据科学,请查看 IIIT-B 和 upGrad 的数据科学 PG 文凭,该文凭专为在职专业人士而设,提供 10 多个案例研究和项目、实用的实践研讨会、与行业专家的指导、1-与行业导师面对面交流,400 多个小时的学习和顶级公司的工作协助。