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]])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章