布尔矩阵求逆,矩阵的布尔积运算
Python NumPy包用于完成N维数组的快速便捷操作。要使用这个包,您需要导入numpy。SciPy包基于numpy包,大大扩展了NumPy的功能。为了使用方便,scipy包包含了最外层名称空间的所有numpy内容,所以只要导入scipy,就不需要单独导入numpy了!但是为了弄清楚哪些是在numpy中实现的,哪些是在scipy中实现的,本文还是做了区分。以下默认值为:导入
Numpy作为np,导入scipy作为sp
下面是Python和MATLAB在处理数学问题上的一些区别。
1.1的基础。MATLAB是矩阵,而numpy的基本类型多是数组。Matrix被视为array的子类。
2.2的索引。MATLAB从1开始,numpy从0开始。
1.建立矩阵
a1=np.array([1,2,3],dtype=int)
#构建一个数据类型为int的一维数组。您也可以在不指定数据类型的情况下使用默认值。几乎所有的数组构建函数都可以指定数据类型,即dtype的值。
a2=np.array([[1,2,3],[2,3,4]])
#建立一个二维数组。这和MATLAB中二维数组(矩阵)的建立有很大不同。
同样,numpy中也有很多内置的特殊矩阵:
b1=np.zeros((2,3))
#生成2行3列全0矩阵。注意参数是元组:(2,3),所以有两个括号。完整的形式是:零(shape,dtype=)。同样的结构,ones()构建全1矩阵。Empty()构建一个空矩阵并用内存中的随机值填充它。
B2=恒等式(n) #建立一个n*n的单位矩阵,只能是方阵。
b3=眼睛(N,M=无,k=0)
#建立一个对角线为1,其余值为0的矩阵,用k指定对角线的位置。m默认无。
此外,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)
#起点、终点、间隔中的点数。起点包含在内。类似地,还有logspace()函数。
d1=np.linalg.companion(a)
#伴随矩阵
d2=np.linalg.triu()/tril()
#函数与MATLAB中的同名函数相同
e1=np.random.rand(3,2)
#生成一个3行2列的随机数组。在同一个空间中,有randn()/randint()等几个随机函数。
fliplr()/flipud()/rot90()
#函数类似于MATLAB的同名函数。
xx=np.roll(x,2)
#roll()是一个循环移位函数。这个调用意味着向右循环移动2位。
2.阵列的特征信息
假设一个N维数组X已经存在,可以得到X的一些属性。输入X和a后,按tab查看提示。Python的面向对象特性在这里显而易见。
X.flags #数组存储信息。
x .形状
#结果是返回行数、列数,
X.ndim #数组的维数,结果是一个数字
X.size #数组中的元素数
X.itemsize
#数组中数据项占用的内存空间量
X.dtype #数据类型
X.T #如果X是一个矩阵,它就是X的转置矩阵。
X.trace() #计算x的轨迹。
Np.linalg.det(a) #返回矩阵a的行列式。
np.linalg.norm(a,ord=None)
#计算矩阵a的范数。
np.linalg.eig(a)
#矩阵A的特征值和特征向量
np.linalg.cond(a,p=无)
#矩阵A的条件数
np.linalg.inv(a)
#矩阵A的逆矩阵
3.矩阵分解
提供了numpy.linalg的常用矩阵分解函数。如chole sky()/QR()/SVD()/Lu()/Schur()等。有些算法为了计算方便,或者针对不同的特殊情况,给出了各种调用形式,以求得到最好的结果。
4.矩阵运算
Np.dot(a,b)用于计算数组的点积;Vdot(a,b)专门计算向量的点积。VDOT (A,B)和点(A)的区别在于对复杂数据类型的不同处理;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中,还有一个计算矩阵的函数:func (a,func)。
5.索引
numpy中的数组索引形式与Python一致。比如:
x=np.arange(10)
打印x[2]
#单个元素,从前到后向前索引。注意下标从0开始。
打印x[-2]
#从后向前索引。最后一个元素的下标是-1。
打印x[2:5]
#多个元素,左闭右开,默认步长值为1。
打印x[:-7]
#多个元素,从后向前,使用默认步长值设置结束位置。
Print [1: 7: 2] #指定步长值
x.shape=(2,5)
#x的shape属性被重新分配,要求是元素个数保持不变。2*5=10
打印x[1,3]
#二维数组索引单个元素,即第2行第4列中的元素
在第一行打印x[0] #所有元素
y=np.arange(35)。整形(5,7)
# shape()函数用于改变数组的维数。
打印y[1:5:2,2]
#在二维数组中选择一些符合条件的元素
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。