布尔矩阵求逆,矩阵的布尔积运算

  布尔矩阵求逆,矩阵的布尔积运算

  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]

  #在二维数组中选择一些符合条件的元素

布尔矩阵求逆,矩阵的布尔积运算