第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

numpy數(shù)組和矩陣之間有什么區(qū)別?我該用哪一個?

numpy數(shù)組和矩陣之間有什么區(qū)別?我該用哪一個?

慕妹3242003 2019-07-06 13:10:39
numpy數(shù)組和矩陣之間有什么區(qū)別?我該用哪一個?每種方法的優(yōu)點和缺點是什么?據(jù)我所見,如果需要的話,兩種方法都可以替代另一種,所以我應該同時使用這兩種,還是應該只使用其中一種呢?節(jié)目的風格會影響我的選擇嗎?我正在用numpy做一些機器學習,所以確實有很多矩陣,但也有很多向量(數(shù)組)。
查看完整描述

3 回答

?
慕神8447489

TA貢獻1780條經(jīng)驗 獲得超1個贊

Numpy矩陣嚴格是二維的,而numpy陣列(Ndarray)是N維的.矩陣對象是ndarray的子類,因此它們繼承了ndarray的所有屬性和方法。

numpy矩陣的主要優(yōu)點是它們?yōu)榫仃嚦朔ㄌ峁┝艘环N方便的表示法:如果a和b是矩陣,那么a*b就是它們的矩陣乘積。

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

另一方面,從Python3.5開始,NumPy支持使用@運算符,因此您可以使用Python>=3.5中的ndarray實現(xiàn)矩陣乘法的同樣方便。

import numpy as np

a=np.array([[4, 3], [2, 1]])b=np.array([[1, 2], [3, 4]])print(a@b)# [[13 20]#  [ 5  8]]

矩陣對象和ndarray都有.T若要返回轉(zhuǎn)置,但矩陣對象也具有.H對于共軛轉(zhuǎn)置,和.I反之亦然。

相反,numpy數(shù)組始終遵循按元素應用操作的規(guī)則(新的除外)。@(操作員)因此,如果ab是numpy數(shù)組,那么a*b是將組件元素按順序相乘形成的數(shù)組:

c=np.array([[4, 3], [2, 1]])d=np.array([[1, 2], [3, 4]])print(c*d)# [[4 6]#  [6 4]]

若要獲得矩陣乘法的結(jié)果,請使用np.dot(或@在Python>=3.5中,如上文所示):

print(np.dot(c,d))# [[13 20]#  [ 5  8]]

這個**運算符的行為也不同:

print(a**2)# [[22 15]#  [10  7]]print(c**2)# [[16  9]#  [ 4  1]]

a是矩陣,a**2返回矩陣積a*a..自c是一條警鐘,c**2返回一個包含每個組件平方元素的ndarray。

矩陣對象和ndarray之間還有其他技術(shù)差異(與np.ravel、項選擇和序列行為有關(guān))。

Numpy陣列的主要優(yōu)點是它們比二維矩陣更通用.當你想要一個三維數(shù)組時會發(fā)生什么?然后你必須使用ndarray,而不是矩陣對象。因此,學習使用矩陣對象是更多的工作-你必須學習矩陣對象操作和ndarray操作。

編寫一個同時使用矩陣和數(shù)組的程序會使你的生活變得困難,因為你必須跟蹤你的變量是哪種類型的對象,以免乘法返回你不想要的東西。

相反,如果您只使用ndarray,那么您可以完成矩陣對象所能做的所有事情,甚至更多,除非函數(shù)/表示法稍有不同。

如果您愿意放棄NumPy矩陣乘積表示法的視覺吸引力(在Python>=3.5中使用ndarray幾乎可以很好地實現(xiàn)它),那么我認為NumPy數(shù)組絕對是可行的。

PS。當然,你真的不必犧牲另一個而選擇一個,因為np.asmatrixnp.asarray允許您將其中一個轉(zhuǎn)換為另一個(只要數(shù)組是二維的)。


NumPy之間的區(qū)別有一個概要arraysVS NumPymatrix埃斯這里.


查看完整回答
反對 回復 2019-07-06
?
守候你守候我

TA貢獻1802條經(jīng)驗 獲得超10個贊

建議您使用數(shù)組:

*“數(shù)組”或“矩陣”?我該用哪一種?-簡短的回答

使用數(shù)組。

  • 它們是Numpy的標準向量/矩陣/張量類型。許多numpy函數(shù)返回數(shù)組,而不是矩陣。

  • 元素運算和線性代數(shù)運算有著明顯的區(qū)別.

  • 如果愿意,可以使用標準向量或行/列向量。

使用數(shù)組類型的唯一缺點是必須使用dot而不是*將兩個張量(標量乘積、矩陣向量乘法等)相乘。


查看完整回答
反對 回復 2019-07-06
?
寶慕林4294392

TA貢獻2021條經(jīng)驗 獲得超8個贊

只是為了在unutbu的名單上加上一個案子。

與numpy矩陣或matlab這樣的矩陣語言相比,numpy ndarray最大的實際區(qū)別之一是,減少運算中沒有保留維數(shù)。矩陣總是2d,而數(shù)組的平均值,例如,其一維數(shù)就少了。

例如,貶低矩陣或數(shù)組的行:

帶矩陣

>>> m = np.mat([[1,2],[2,3]])>>> m
matrix([[1, 2],
        [2, 3]])>>> mm = m.mean(1)>>> mm
matrix([[ 1.5],
        [ 2.5]])>>> mm.shape(2, 1)>>> m - mm
matrix([[-0.5,  0.5],
        [-0.5,  0.5]])

帶數(shù)組

>>> a = np.array([[1,2],[2,3]])>>> a
array([[1, 2],
       [2, 3]])>>> am = a.mean(1)>>> am.shape(2,)>>> am
array([ 1.5,  2.5])>>> a - am #wrongarray([[-0.5, -0.5],
       [ 0.5,  0.5]])>>> a - am[:, np.newaxis]  #rightarray([[-0.5,  0.5],
       [-0.5,  0.5]])

我還認為混合數(shù)組和矩陣會導致許多“愉快”的調(diào)試時間。然而,稀疏矩陣通常是像乘法這樣的算子的矩陣。


查看完整回答
反對 回復 2019-07-06
  • 3 回答
  • 0 關(guān)注
  • 2454 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號