NumPy. URL: NumPy
SciPy. URL: https://www.scipy.org/
首先来一拨正名。所谓“SciPy”其实是个组织,负责一系列 Python 包的更新和维护。同时“SciPy”也指一个 Python 包。所谓“NumPy”则只是一个 Python 包。不论 NumPy 这个包还是 SciPy 这个包都由 SciPy 这个组织维护。
NumPy 所提供的功能是数值计算和数值线性代数。其最核心的功能就是为 Python 提供了张量这种数据结构以及张量相关的基本运算——例如数乘、矩阵乘法、张量拼接等等。而所谓的“张量”其实就是向量以及各种向量的向量。举例来说,单个的 32 位浮点数是一个标量,也称作 0 阶张量。三个 32 位浮点数一组就构成一个维度为 3 的 1阶张量,一般也叫“三维向量”。5 个三维向量 就可以组成一个“五乘三矩阵”,实际上也可以叫维度分别为 5, 3 的 2 阶张量。而这样的矩阵为元素组成的向量就是 3 阶张量,3 阶张量为元素组成的向量就是 4 阶张量。
SciPy 则是在 NumPy 的张量线性代数框架的基础上增加了常用的数值计算工具,例如科学常量、常用特殊方程、常用数值算法等等。当你新学了一个数值方法想要付诸实现的时候不要盲目自己写,先看看 NumPy, SciPy 中有没有相关的功能是一个比较明智的做法。
其实数值计算也好,张量代数也罢,都不是什么新鲜的东西。MATLAB、 C 乃至 Fortran 中都早有了同类的功能或库。NumPy 这一组工具能够火