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] |
|