論numpy中matrix 和 array的區別

2021-08-09 12:56:56 字數 2513 閱讀 4213

論numpy中matrix 和 array的區別 - csdn部落格

2023年03月07日 16:26:55

numpy matrices必須是2維的,但是 numpy arrays (ndarrays) 可以是多維的(1d,2d,3d····nd). matrix是array的乙個小的分支,包含於array。所以matrix 擁有array的所有特性。

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

import

numpy

asnpa=

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]]

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

相反的是在numpy裡面arrays遵從逐個元素的運算,所以array:c 和d的c*d運算相當於matlab裡面的c.*d運算。

c=np

.array

([[4,3

],[2,

1]])d=

np.array

([[1,2

],[3,

4]])

print(c

*d)# [[4 6]

# [6 4]]

而矩陣相乘,則需要numpy裡面的dot命令 :

print(np

.dot(c

,d))# [[13 20]

# [ 5 8]]

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

print(a

**2)# [[22 15]

# [10 7]]

print(c

**2)# [[16 9]

# [ 4 1]]

因為a是個matrix,所以a

**2返回的是a*a,相當於矩陣相乘。而c是array,c

**2相當於,c中的元素逐個求平方。

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

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

對我來說,numpy 中的array與numpy中的matrix,matlab中的matrix的最大的不同是,在做歸約運算時,array的維數會發生變化,但matrix總是保持為2維。例如下面求平均值的運算

>>>m =

np.mat([[1,

2],[2,

3]])

>>>

mmatrix

([[1,2

],[2,

3]])

>>>

mm =m.

mean(1

)>>>

mmmatrix

([[1.5],[

2.5]])

>>>mm.

shape(2

,1)>>>m -

mmmatrix

([[-

0.5,

0.5],

[-0.5

,0.5

]])

對array 來說

>>>a =

np.array

([[1,2

],[2,3

]])>>>

aarray

([[1,2

],[2,

3]])

>>>

am =a.

mean(1

)>>>am.

shape(2

,)>>>

amarray

([1.5

,2.5

])>>>a -

am #wrong

array

([[-

0.5,

-0.5],[

0.5,

0.5]])

>>>a -

am[:,np.

newaxis

]#right

array

([[-

0.5,

0.5],

[-0.5

,0.5

]])

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 matrices必須是2維的,但是 numpy arrays ndarrays 可以是多維的 1d,2d,3d nd matrix是array的乙個小的分支,包含於array。所以matrix 擁有array的所有特性。所以 在sklearn 中如果傳入的特徵只有乙個,要使用x.valu...

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...