numpy中matrix 和 array的區別

2021-08-19 16:54:43 字數 2014 閱讀 8276

numpy matrices必須是2維的,但是 numpy arrays (ndarrays) 可以是多維的(1d,2d,3d····nd). matrix是array的乙個小的分支,包含於array。所以matrix 擁有array的所有特性。【所以:在sklearn 中如果傳入的特徵只有乙個,要使用x.values.reshape(-1,1) 轉化格式】

在numpy中matrix的主要優勢是:相對簡單的乘法運算符號。例如,a和b是兩個matrices,那麼a*b,就是矩陣積。

import numpy as np

in [34]: a = np.mat([[4,3,],[1,2]])

in [35]: a

out[35]:

matrix([[4, 3],

[1, 2]])

in [36]: b = np.mat([[1,2],[3,4]])

in [37]: b

out[37]:

matrix([[1, 2],

[3, 4]])

in [38]: a*b

out[38]:

matrix([[13, 20],

[ 7, 10]])

但是如果要得到矩陣對應元素相乘的話 可以使用numpy 的multiply 方法

from numpy import multiply

multiply(c,d)

matrix 和 array 都可以通過objects後面加 (.t) 得到其轉置。但是 matrix objects 還可以在後面加 (.h) 得到共軛矩陣, 加 ( .i ) 得到逆矩陣。

相反的是在numpy裡面arrays遵從對應元素的運算。

in [40]: c = np.asarray(a)

in [41]: c

out[41]:

array([[4, 3],

[1, 2]])

in [42]: d = np.asarray(b)

in [43]: d

out[43]:

array([[1, 2],

[3, 4]])

in [44]: c*d

out[44]:

array([[4, 6],

[3, 8]])

而要實現矩陣相乘,則需要numpy裡面的dot命令 (這個對兩中型別都適用,因為matrix 屬於array):

in [45]: np.dot(a,b)

out[45]:

matrix([[13, 20],

[ 7, 10]])

in [46]: np.dot(c,d)

out[46]:

array([[13, 20],

[ 7, 10]])

** 運算子的作用也不一樣 :

in [47]: a**2

out[47]:

matrix([[19, 18],

[ 6, 7]])

in [48]: a

out[48]:

matrix([[4, 3],

[1, 2]])

in [49]: c**2

out[49]:

array([[16, 9],

[ 1, 4]], dtype=int32)

in [50]: c

out[50]:

array([[4, 3],

[1, 2]])

因為a是個matrix,所以a**2返回的是a*a,相當於矩陣相乘。而c是array,c**2相當於,c中的元素逐個求平方。

問題就出來了,如果乙個程式裡面既有matrix 又有array,會讓人腦袋大。但是如果只用array,你不僅可以實現matrix所有的功能,還減少了程式設計和閱讀的麻煩。

當然你可以通過下面的兩條命令輕鬆的實現兩者之間的轉換:np.asmatrix和np.asarray

NumPy中ndarray和matrix的四則運算

numpy中最重要的類是ndarray,顧名思義,即多維陣列。import numpy as np行向量 a np.array 1,2,3 a.shape 3l,列向量 b np.array 1 2 3 b.shape 3l,1l 二維矩陣 m np.array 1,2,3 4,5,6 7,8,9 ...

論numpy中matrix 和 array的區別

論numpy中matrix 和 array的區別 csdn部落格 2014年03月07日 16 26 55 numpy matrices必須是2維的,但是 numpy arrays ndarrays 可以是多維的 1d,2d,3d nd matrix是array的乙個小的分支,包含於array。所以...

numpy中matrix和array的區別

import numpy as np a np.mat 4 3 2 1 b np.mat 1 2 3 4 print a 4 3 2 1 print b 1 2 3 4 print a b 13 20 5 8 c np.array 4,3 2,1 d np.array 1,2 3,4 print c...