python:矩阵(ndarray)的常用运算

简介

下面简单总结python中矩阵的常用运算。

重要注释:在numpy中既可以用二维数组(numpy.ndarray)来表示矩阵,也可用numpy.matrix来表示矩阵。但我统一选择用ndarray来表示矩阵。
原因:

  1. ndarray更通用,可以表示任意N维数组;
  2. 官方文档不推荐用matrix,可能会在未来版本中移除matrix
  3. 以前用matrix的一个好处是,可以直接用a*b进行矩阵乘法,而ndarray需要用np.dot(a,b)。但在较新版本中(Python 3.5+,NumPy 1.10+),引入了@运算符,即对于二维数组(ndarray),可以直接用a@b进行矩阵乘法。

矩阵按元素相乘

方法:a*bnp.multiply(a,b)
实例:

In [37]: a
Out[37]: 
array([[ 1,  0],
       [ 0, -1]])

In [38]: b = np.array([[0,1],[1,0]])

In [39]: b
Out[39]: 
array([[0, 1],
       [1, 0]])

In [41]: a*b
Out[41]: 
array([[0, 0],
       [0, 0]])

In [42]: np.multiply(a,b)
Out[42]: 
array([[0, 0],
       [0, 0]])

矩阵乘法

方法:a@b 或者np.dot(a,b)
实例:

In [43]: a = np.diag([1,-1])

In [44]: b = np.array([[0,1],[1,0]])

In [45]: a@b
Out[45]: 
array([[ 0,  1],
       [-1,  0]])

In [46]: np.dot(a,b)
Out[46]: 
array([[ 0,  1],
       [-1,  0]])

注意:np.dot(a,b)
使用说明:

  • 当a和b都为2维数组(矩阵)时,进行矩阵乘法
  • 当a和b都为1维数组时,进行内积运算,等价于np.sum(a*b)

矩阵的指数运算

方法:scipy.linalg.expm(a)
实例:

In [29]: a = np.array([[0,1],[1,0]])

In [30]: expm(-1j/2*np.pi*a)    #先导入, from scipy.linalg import expm
Out[30]: 
array([[0.+0.j, 0.-1.j],
       [0.-1.j, 0.+0.j]])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章