1、简介
Python是一种流行的通用编程语言,在科学领域被广泛使用。你很容易在Python代码中调用以前的C、Fortran或者R代码。Python是面向对象语言,比C和Fortran更加高级。使用Python可以写出易读、整洁并且缺陷最少的代码。然而,Python本身并不具有与Matlab等效的功能块,而这恰恰就是NumPy存在的意义。除NumPy以外,相关的Python科学计算库还有,SciPy和Matplotlib。ipython是一个净强化的交互Python Shell,对探索NumPy的特性非常方便;matplotlib将允许你绘图;Scipy在NumPy的基础上提供了很多科学模块;
NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。如果你的系统中已经装有LAPACK,NumPy的线性代数模块会调用它,否则NumPy将使用自己实现的库函数。LAPACK是一个著名的数值计算库,最初是用Fortran写成的,Matlab同样也需要调用它。从某种意义上讲,NumPy可以取代Matlab和Mathematica的部分功能并且允许用户进行快速的交互式原型设计
NumPy能够直接对数组和矩阵进行操作,可以省略很多循环语句,其众多的数学函数也会让编写代码的工作轻松许多;了NumPy的两个特性:向量化(Vectorization)和广播(Broadcasting),它们是NumPy强大之处的基础。
向量化用于描述任何缺失的显式循环、索引及其它,在代码这些事情是即时发生;一般来说,NumPy中所有操作,并不只是算术运算,还有逻辑运算,位运算,函数运算等,以这种隐式的元素层面的方式执行,就是广播。
NumPy中数组的存储效率和输入输出性能均远远优于Python中等价的基本数据结构;NumPy数组的通用性不及Python提供的list容器,这是其不足之处;
NumPy的大部分代码都是用C语言写成的,这使得NumPy比纯Python代码高效得多;
列表操作:
c = []
for i in range(len(a)):
c.append(a[i]*b[i])
C语言,一维数组:
for (i = 0; i < rows; i++)
{c[i] = a[i]*b[i];}
C语言,二维数组:
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
c[i][j] = a[i][j]*b[i][j];
}
}
Numpy,
c = a * b
2、Numpy函数总览
创建数组:
arange, array, copy, empty, empty_like, eye, fromfile, fromfunction, identity, linspace, logspace, mgrid, ogrid, ones,ones_like, r , zeros, zeros_like
转化:
astype, atl