python numpy中mat和matrix的區別
個人理解:
np.mat()
import numpy as np
b=np.mat(a)
是將a轉化為矩陣
如果a本身是矩陣,就是創建a的一個引用,相當於:np.matrix(a,copy=False)
無論a和b哪一個發生改變都會影響矩陣本身。
如果a不是矩陣,此時b就是a轉化成矩陣的結果,是在原有的基礎上進行copy().
np.matrix()
單純的是創建一個矩陣。
補充:python中numpy模塊下函數array()和mat()的區別
1. mat()函數與array()函數生成矩陣所需的數據格式有區別
(1) mat()函數中數據可以為字符串以分號(;)分割,或者為列表形式以逗號(,)分割。而array()函數中數據隻能為後者形式。
如mat()函數生成矩陣時一下兩種方式都正確。
(2) 而array()函數生成矩陣時數據隻能為列表形式。
2. mat()函數與array()函數生成的矩陣計算方式不同
(1) mat()函數中矩陣的乘積可以使用(星號) * 或 .dot()函數,其結果相同。而矩陣對應位置元素相乘需調用numpy.multiply()函數。
(2) array()函數中矩陣的乘積隻能使用 .dot()函數。而星號乘 (*)則表示矩陣對應位置元素相乘,與numpy.multiply()函數結果相同。
如生成以下矩陣:
a = numpy.mat([[1, 3], [5, 7]]) b = numpy.mat([[2, 4], [6, 8]]) c = numpy.array([[1, 3], [5, 7]]) d = numpy.array([[2, 4], [6, 8]])
則 a * b = a.dot(b) = c.dot(d)
,其表示矩陣相乘。
而 numpy.multiply(a, b) = c * d = numpy.multiply(c, d)
,其表示矩陣對應位置元素相乘。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- numpy稀疏矩陣的實現
- Python NumPy教程之數組的創建詳解
- 初識python的numpy模塊
- python中np.multiply()、np.dot()和星號(*)三種乘法運算的區別詳解
- python中NumPy的安裝與基本操作