Numpy 是 Python 的一个科学计算库,在数学、统计、工程等方面都有非常好的应用。Numpy 对多维数组的支持也非常完善,包括矩阵的运算,高维数组运算等。很多库都依赖于 Numpy,例如 PyTorch,Tensorflow 等,尤其涉及到多维数组的操作时,更是少不了 Numpy。本篇基础教程由 PyTorch 中文网整理,希望帮助每个刚刚接触 Numpy 的朋友快速入门。

NumPy 是Python 语言的一个扩展程序库。支持高端大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy 引入了多维数组以及可以直接有效率地操作多维数组的函数与运算符。因此在 NumPy 上只要能被表示为针对数组或矩阵运算的算法,其运行效率几乎都可以与编译过的等效 C 语言代码一样快。

NumPy 提供了与 MATLAB 相似的功能与操作方式,因为两者皆为解释型语言,并且都可以让用户在针对数组或矩阵运算时提供较标量运算更快的性能。从本质上来说,NumPy 与 MATLAB 同样是利用 BLAS 与 LAPACK 来提供高效率的线性代数运算。

实际使用中,这两句可以合并:

可以使用 shape 属性来查看数组的形状,也可以用 dtype 属性查看数组元素的类型:

可以用双尖括号([])来创建多维数组,每个维度之间用逗号分隔,例如:

这两个命令可以创建值全部为 0 或全部为 1 的数组,一般用来初始化一个数组的时候:

有些时候需要对数组的形状进行变换,例如:

如果需要把一个多维数组“拍平”,可以使用 flatten 函数:

这两个函数分别用于在水平方向和竖直方向增加数据,我们来看具体例子:

如果将这个分布画出来,符合下列分布:

有些时候我们需要在一个区间内的一些数,这个时候要用到 arange。

这个方法可以在一个区间内平均地生成多个数。

我们可以用 np.dot 实现矩阵的点乘操作:

同样,可以用 np.matmul 实现矩阵相乘的操作: