Type/to search
8
Follow
1376
Followers
Python -- numpy 矩阵运算
Quantpedia
Created 2017-01-12 12:47:58  
 0
 4683

Python -- numpy 矩阵运算

注:NumPy是Numarray的后继者,用来代替NumArray。SAGE是基于NumPy和其他几个工具所整合成的数学软件包,目标是取代Magma, Maple, Mathematica和Matlab 这类工具。
今天我想在网上找一些关于NumPy的介绍,并试一下用NumPy求逆矩阵的时候,竟然找不到任何中文的资料,有网友在论坛请教“怎么用python进行矩 阵求逆”,也无一人回答。因此我找到NumPy的官方文档,其中有一小节内容是介绍矩阵对象的,于是我就把这一节翻译成中文,作出点微小的贡献,时间较 短,没怎么检查拼写错误,有问题请原谅。翻译者:Keengle。

  • 1、矩阵(Matrix)对象

    Matrix类型继承于ndarray类型,因此含有ndarray的所有数据属性和方法。Matrix类型与ndarray类型有六个重要的不同点,当你当Matrix对象当arrays操作时,这些不同点会导致非预期的结果。

    • 1)Matrix对象可以使用一个Matlab风格的字符串来创建,也就是一个以空格分隔列,以分号分隔行的字符串。

    • 2)Matrix对象总是二维的。这包含有深远的影响,比如m.ravel()的返回值是二维的,成员选择的返回值也是二维的,因此序列的行为与array会有本质的不同。

    • 3)Matrix类型的乘法覆盖了array的乘法,使用的是矩阵的乘法运算。当你接收矩阵的返回值的时候,确保你已经理解这些函数的含义。特别地,事实上函数asanyarray(m)会返回一个matrix,如果m是一个matrix。

    • 4)Matrix类型的幂运算也覆盖了之前的幂运算,使用矩阵的幂。根据这个事实,再提醒一下,如果使用一个矩阵的幂作为参数调用asanarray(...)跟上面的相同。

    • 5)矩阵默认的array_priority是10.0,因而ndarray和matrix对象混合的运算总是返回矩阵。

    • 6)矩阵有几个特有的属性使得计算更加容易,这些属性有:

      • (a) .T -- 返回自身的转置

      • (b) .H -- 返回自身的共轭转置

      • (c) .I -- 返回自身的逆矩阵

      • (d) .A -- 返回自身数据的2维数组的一个视图(没有做任何的拷贝)

        Matrix类 是ndarray的一个Python子类,你也可以学习这个实现来构造自己的ndarray子类。Matrix对象也可以使用其它的Matrix对象,字 符串,或者其它的可以转换为一个ndarray的参数来构造。另外,在NumPy里,“mat”是“matrix”的一个别名。

  • 例1: 使用字符串构造矩阵

    import numpy as np a=np.mat('1 2 3; 4 5 3') print (a*a.T).I [[ 0.29239766 -0.13450292] [-0.13450292 0.08187135]]
  • 例2: 使用嵌套序列构造矩阵

    np.matrix([[ 1.+0.j, 5.+0.j, 10.+0.j], [ 1.+0.j, 3.+0.j, 0.+4.j]])
  • 例3: 使用一个数组构造矩阵

    np.mat( np.random.rand(3,3) ).T np.matrix([[ 0.81541602, 0.73987459, 0.03509142], [ 0.14767449, 0.60539483, 0.05641679], [ 0.43257759, 0.628695 , 0.47413553]])

    Matrix( data, dtype=None, copy=True )
    将 以参数data传进来的数据转换为矩阵。如果dtype是None,那么数据类型将由data的内容来决定。如果copy为True,则会拷贝data中 的数据,否则会使用原来的数据缓冲。如果没有找到数据的缓冲区,当然也会进行数据的拷贝。注意:矩阵matrix事实上是一个类型,因此当你构造实例的时 候会调用matrix.new(matrix, data, dtype, copy)。
    Mat
    只是matrix的一个别名。
    Asmatrix(data, dtype=None)
    返回不经过复制的数据。等价于matrix(data, dtype, copy=False)。
    Bmat(obj, ldict=None, gdict=None)
    使用一个字符串,嵌套的序列或者一个数组(array)构造一个矩阵。这个命令允许你从其它的对象来建立起矩阵。其中当obj是一个字符串的时候才会使用参数ldict和gdict,这两个参数是局部和模块的字典。如果你没有提供它们,这些将由系统提供。

    A=np.mat('2 2; 2 2'); B=np.mat('1 1; 1 1'); print(np.bmat('A B; B A')) [[2 2 1 1] [2 2 1 1] [1 1 2 2] [1 1 2 2]]

转载自 作者 su frank

Related Recommendations
Comment
All comments (0)
No data
No data
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)