Python数组与矩阵操作
1、MATLAB的基于矩阵的操作,而numpy多是基于数组的操作,numpy的索引从0开始。
import numpy as np impor scipy as sp
(1)建立矩阵
a=np.array([1,2,3],dtype=int)
#建立一个一维数组,数据类型是int。也可以不指定数据类型,使用默认。
示例
import numpy as np a=np.array([1,2,3],dtype=int) print a1
结果
(2)a2=np.array([[1,2,3],[2,3,4]])
#建立一个二维数组。
示例
import numpy as np a1=np.array([[1,2,3],[4,6,7]]) print a1
结果
(3)内置函数
b=np.zeros((2,3))
#生成一个2行3列的全0矩阵。
注意,参数是一个tuple(元组):(2,3),所以有两个括号。完整的形式为:zeros(shape,dtype=)。
示例
import numpy as np b=np.zeros((2,3)) print b
结果
(4)b=np.ones((3,4))
#生成一个3行4列的全1矩阵
示例
import numpy as np b=np.ones((3,4)) print b
结果
(5)np.empty()
#建立一个空矩阵,使用内存中的随机值来填充这个矩阵。
示例
import numpy as np b=np.empty((3,4)) print b
结果
(6)b=np.identity(n)
#建立n*n的单位阵,这只能是一个方阵。
示例
import numpy as np b=np.identity(4) print b
结果
(7)b=np.eye(N,M=None,k=0)
#建立一个对角线是1其余值为0的矩阵,用k指定对角线的位置。M默认None。
示例
import numpy as np b=np.eye(3,None,1) print b
结果
此外,numpy中还提供了几个like函数,即按照某一个已知的数组的规模(几行几列)建立同样规模的特殊数组。这样的函数有zeros_like()、empty_like()、ones_like(),它们的参数均为如此形式:zeros_like(a,dtype=),其中,a是一个已知的数组。
2、arange()函数
c=np.arange(start,end,step)
#start起点,end终点,step步长值,含起点值,不含终点值。
示例
import numpy as np c=np.arange(2,3,0.1) print c
结果
3、linspace( )函数
c=np.linspace(start,end,counts) #start:起点,end:终点,counts:区间内点数。起点终点均包括在内
示例
import numpy as np c=np.linspace(1,4,10) print c
结果
4、X.T
#如果X是矩阵,X.T是X的转置矩阵
示例
import numpy as np x=np.array([[1,2,4],[5,6,7]]) print x print '--------' print x.T
结果
5、X.trace()
示例
import numpy as np x=np.array([[1,2,4],[5,6,7],[1,1,3]]) print x print x.trace()
结果
6、np.linalg.det(a)
#返回的是矩阵a的行列式
示例
import numpy as np x=np.array([[1,2,4],[5,2,4],[1,3,2]]) print x st=np.linalg.det(x) print st
结果
7、np.linalg.eig(a)
#矩阵a的特征值和特征向量
示例
import numpy as np x=np.array([[-2,1,1],[0,2,0],[-4,1,3]]) print x print '--------' st=np.linalg.eig(x) print st
结果
其特征值:-1.,2.,2.