安装:sudo apt-get install Python-numpy
使用:import numpy as np
1.建立矩阵
a1=np.array([1,2,3],dtype=int)
a2=np.array([[1,2,3],[2,3,4]])
同样,numpy中也有很多内置的特殊矩阵:
b1=np.zeros((2,3))
b2=identity(n)
b3=eye(N,M=None,k=0)
此外,numpy中还提供了几个like函数,即按照某一个已知的数组的规模(几行几列)建立同样规模的特殊数组。这样的函数有zeros_like()、empty_like()、ones_like(),它们的参数均为如此形式:zeros_like(a,dtype=),其中,a是一个已知的数组。
c1=np.arange(2,3,0.1)
c2=np.linspace(1,4,10)
d1=np.linalg.companion(a)
d2=np.linalg.triu()/tril()
e1=np.random.rand(3,2)
fliplr()/flipud()/rot90()
xx=np.roll(x,2)
2.数组的特征信息
先假设已经存在一个N维数组X了,那么可以得到X的一些属性,这些属性可以在输入X和一个.之后,按tab键查看提示。这里明显看到了Python面向对象的特征。
X.flags
X.shape
X.ndim
X.size
X.itemsize
X.dtype
X.T
X.trace()
np.linalg.det(a)
np.linalg.norm(a,ord=None)
np.linalg.eig(a)
np.linalg.cond(a,p=None)
np.linalg.inv(a)
np.linalg.pinv(a)
3.矩阵分解
常见的矩阵分解函数,numpy.linalg均已经提供。比如cholesky()/qr()/svd()/lu()/schur()等。某些算法为了方便计算或者针对不同的特殊情况,还给出了多种调用形式,以便得到最佳结果。
4.矩阵运算
np.dot(a,b)用来计算数组的点积;vdot(a,b)专门计算矢量的点积,和dot()的区别在于对complex数据类型的处理不一样;innner(a,b)用来计算内积;outer(a,b)计算外积。
专门处理矩阵的数学函数在numpy的子包linalg中定义。比如np.linalg.logm(A)计算矩阵A的对数。可见,这个处理和MATLAB是类似的,使用一个m后缀表示是矩阵的运算。在这个空间内可以使用的有cosm()/sinm()/signm()/sqrtm()等。其中常规exp()对应有三种矩阵形式:expm()使用Pade近似算法、expm2()使用特征值分析算法、expm3()使用泰勒级数算法。在numpy中,也有一个计算矩阵的函数:funm(A,func)。
5.索引
numpy中的数组索引形式和Python是一致的。如:
x=np.arange(10)
print x[2]
print x[-2]
print x[2:5]
print x[:-7]
print x[1:7:2]
x.shape=(2,5)
print x[1,3]
print x[0]
y=np.arange(35).reshape(5,7)
print y[1:5:2,::2]