12 扩展:科学计算 numpy和scipy
科学计算常用模块
Numpy:Arrays manipulation library 科学计算的必装模块,几乎所有的其他科学模块都依赖于它
Scipy:扩展的科学计算模块
PyGSL:C/C++语言中著名的科学计算函数库GNU Scientific Library(GSL)的python版
Matplotlib:高质量的2D作图模块,足以替代GNUPlot
Mayavi:强大的三维作图模块,属于EPD公司套件的一部分(注意:此模块支持Python2,官方未支持Python3)
Sympy:符号计算模块
StatLib:统计学工具箱
Escript/Finley:偏微分方程求解
Parallel Python:并行计算模块
下面我们来详细介绍其中的numpy和scipy模块。
Numpy模块简介
Numpy是Python的扩展模块,提供了矩阵、线性代数、傅里叶变换等的解决方法。 NumPy包含:N维矩阵对象、线性代数运算功能、傅里叶变换、Fortran代码集成的工具、C++代码集成的工具。
Scipy模块简介
SciPy是基于Numpy构建的一个集成了多种数学算法和方便的函数的Python模块。 SciPy的子模块需要单独import。 Scipy包含:constants物理和数学常数、fftpack快速傅立叶变换程序、integrate 积分和常微分方程求解器、interpolate拟合和平滑曲线、 linalg线性代数、optimize最优路径选择、signal信号处理、sparse稀疏矩阵和以及相关程序、special特殊函数、stats统计上的函数和分布等。
Numpy数组
Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的[1,2,3],需要有3个指针和三个整数对象。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间。 此外Python还提供了一个array模块,可以直接保存数值,但是不支持多维,也没有各种运算函数,因此也不适合做数值运算。 NumPy的诞生弥补了这些不足,NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和ufunc(universal function object)。 ndarray(下文统一称之为数组)是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。
Numpy数组创建
函数式创建:
np.array 与 list 的区别
一维数组取样
二维数组取样
条件取样
数组排序
argsort函数返回数组值从小到大的索引
数学数组方法
数组合并
数据存储
很多时候我们需要将程序运算得到的数据进行存储,Numpy为我们提供了存储数据的函数。格式如下:
数据读取
既然更够存储数据,那一定也有读取之前已经存储的数据的方法。函数的格式如下:
和math函数比较
Python本身其实自带math库以用于一般的数学计算,Numpy中的函数是针对数组设计的,且更为快速和强大,这里我们来弄清楚二者的具体区别。
Last updated