zoukankan      html  css  js  c++  java
  • numpy matrix 与ndarray的区别

    例子:

    A=np.array([[1,2],[3,4]])
    B=np.array([[5,6],[7,8]])

    C=np.mat([[1,2],[3,4]])
    D=np.mat([[6,7],[8,9]])
    1
    2
    3
    4
    5
    1.ndarray 可以是任意维数 mat只能是2维的
    #正常
    A=np.array([[[1,2]]])
    #报错
    B = np.mat([[[1,2]]])
    1
    2
    3
    4
    2.矩阵乘法
    ndarray:
    1. np.dot 是叉乘 (各元素相乘后相加)
    A.dot(B)=np.dot(A,B)
    得到:
    array([[19, 22],
    [43, 50]])
    2 A*B=np.multiply(A,B) (各对应位置元素相乘)

    得到:
    array([[ 5, 12],
    [21, 32]])
    matrix:

    1. C*D=np.dot(C,D)=C.dot(D) (各元素相乘后相加)
    得到:
    matrix([[22, 25],
    [50, 57]])
    2. np=np.multiply(C,D) (各对应位置元素相乘)
    得到:
    matrix([[6, 7],
    [8, 9]])
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    3.matrix与ndarray互换
    1.matrix->ndarray (使用matrix对象的A属性或者np.asarray()方法)

    E=C.A
    E=np.asarray(C)
    #注意E和A共享内存空间,修改了A之后E的值也会被修改

    2.ndarray->matrix (使用np.asmatrix()方法)

    E=np.asmatrix(A)

    4.matrix 和 array 都可以通过objects后面加.T 得到其转置。但是 matrix objects 还可以在后面加 .H f得到共轭矩阵, 加 .I 得到逆矩阵。
    5.** 运算符的作用也不一样 :因为a是个matrix,所以a**2返回的是a*a,相当于矩阵相乘。而c是array,c**2相当于,c中的元素逐个求平方
    6.numpy 中的array与numpy中的matrix的最大的不同是,在做归约运算时,array的维数会发生变化,但matrix总是保持为2维。例如下面求平均值的运算
    >>> C
    matrix([[1, 2],
    [3, 4]])
    >>> C.mean(1)
    matrix([[1.5],
    [3.5]])
    >>> A
    array([[1, 2],
    [3, 4]])
    >>> A.mean(1)
    array([1.5, 3.5])
    >>>

  • 相关阅读:
    第一、二章读书笔记
    # 学号 20191221 《Python程序设计》实验一报告
    20191221实验四实验报告
    学号:20191221,《python实验设计》实验报告三
    20191221实验二报告
    快速浏览教材遇到
    何应霆 20191221
    2019-2020-1 20191319 《信息安全专业导论》第3周学习总结
    2019-2020-1 20191319《信息安全专业导论》第二周学习总结
    师生关系
  • 原文地址:https://www.cnblogs.com/Ph-one/p/12111615.html
Copyright © 2011-2022 走看看