最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python numpy中multiply與*及matul 的區(qū)別說明

 更新時間:2021年05月26日 11:15:43   作者:樂曉東隨筆  
這篇文章主要介紹了python numpy中multiply與*及matul 的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

1、對于矩陣(matrix)而言

multiply是對應元素相乘,而 * 、np.matmul() 函數(shù) 與 np.dot()函數(shù) 相當于矩陣乘法(矢量積),對應的列數(shù)和行數(shù)必須滿足乘法規(guī)則;如果希望以數(shù)量積的方式進行,則必須使用 np.multiply 函數(shù),如下所示:

a = np.mat([[1, 2, 3, 4, 5]])
b = np.mat([[1,2,3,4,5]])
c=np.multiply(a,b)
print(c)

結果是

[[ 1 4 9 16 25]]
a = np.mat([[1, 2, 3, 4, 5]])
b = np.mat([ [1],[2],[3],[4],[5] ] )
d=a*b
print(d) #a是shape(1,5),b是shape(5,1),結果是一個實數(shù)

結果是

[[55]]

2、對于數(shù)組(Array)而言

* 與 multiply均表示的是數(shù)量積(即對應元素的乘積相加),np.matmul與np.dot表示的是矢量積(即矩陣乘法)。

代碼:

if __name__ == '__main__':
    w = np.array([[1,2],[3,4]])
    x = np.array([[1,3],[2,4]])
    w1 = np.array([[1,2],[3,4]])
    x1 = np.array([[1,2]])
    w_mat = np.mat([[1,2],[3,4]])
    x_mat = np.mat([[1,3],[2,4]])
    print("x1.shape:",np.shape(x1))
    w_x_start = w*x
    w_x_dot = np.dot(w,x)
    x_w_dot = np.dot(x,w)
    w_x_matmul = np.matmul(w, x)
    x_w_matmul = np.matmul(x, w)
    w_x_multiply = np.multiply(w,x)
    x_w_multiply = np.multiply(x, w)
    #w1_x1_matmul = np.matmul(w1, x1)
    x1_w1_matmul = np.matmul(x1, w1)
    w_x_mat_matmul = np.matmul(w_mat,x_mat)
    x_w_mat_matmul = np.matmul(x_mat, w_mat)
    w_x_mat_start = w_mat*x_mat
    x_w_mat_start = x_mat*w_mat
    w_x_mat_dot = np.dot(w_mat,x_mat)
    x_w_mat_dot = np.dot(x_mat,w_mat)
    w_x_mat_multiply = np.multiply(w_mat,x_mat)
    x_w_mat_multiply = np.multiply(x_mat,w_mat)
 
    print("W.shape:", np.shape(w))
    print("x.shape:", np.shape(x))
    print("w_x_start.shape:", np.shape(w_x_start))
    print("w_x_dot.shape:", np.shape(w_x_dot))
    print("x_w_dot.shape:", np.shape(x_w_dot))
    print("x1_w1_matmul.shape::", np.shape(x1_w1_matmul))
 
    print("做Array數(shù)組運算時:", '\n')
    print("w_x_start:", w_x_start)
    print("w_x_dot:", w_x_dot)
    print("x_w_dot:", x_w_dot)
    print("w_x_matmul:", w_x_matmul)
    print("x_w_matmul:", x_w_matmul)
    print("w_x_multiply:", w_x_multiply)
    print("x_w_multiply:", x_w_multiply)
    # print("w1_x1_matmul:", w1_x1_matmul)
    print("x1_w1_matmul:", x1_w1_matmul)
 
    print("做matrix矩陣運算時:", '\n')
    print("w_x_mat_start:", w_x_mat_start)
    print("x_w_mat_start:", x_w_mat_start)
    print("x_w_mat_dot:", x_w_mat_dot)
    print("w_x_mat_dot:", w_x_mat_dot)
    print("w_x_mat_matmul:",w_x_mat_matmul)
    print("x_w_mat_matmul:", x_w_mat_matmul)
    print("w_x_mat_multiply",w_x_mat_multiply)
    print("x_w_mat_multiply", x_w_mat_multiply)
x1.shape: (1, 2)
W.shape: (2, 2)
x.shape: (2, 2)
w_x_start.shape: (2, 2)
w_x_dot.shape: (2, 2)
x_w_dot.shape: (2, 2)
x1_w1_matmul.shape:: (1, 2)
做Array數(shù)組運算時:
 
w_x_start: [[ 1  6]
 [ 6 16]]
w_x_dot: [[ 5 11]
 [11 25]]
x_w_dot: [[10 14]
 [14 20]]
w_x_matmul: [[ 5 11]
 [11 25]]
x_w_matmul: [[10 14]
 [14 20]]
w_x_multiply: [[ 1  6]
 [ 6 16]]
x_w_multiply: [[ 1  6]
 [ 6 16]]
x1_w1_matmul: [[ 7 10]]
做matrix矩陣運算時:
 
w_x_mat_start: [[ 5 11]
 [11 25]]
x_w_mat_start: [[10 14]
 [14 20]]
x_w_mat_dot: [[10 14]
 [14 20]]
w_x_mat_dot: [[ 5 11]
 [11 25]]
w_x_mat_matmul: [[ 5 11]
 [11 25]]
x_w_mat_matmul: [[10 14]
 [14 20]]
w_x_mat_multiply [[ 1  6]
 [ 6 16]]
x_w_mat_multiply [[ 1  6]
 [ 6 16]]

python中轉置的優(yōu)先級高于乘法運算 例如:

a = np.mat([[2, 3, 4]])
b = np.mat([[1,2,3]] )
d=a*b.T
print(d)

結果是

[[20]]

其中a為1行3列,b也為1行3列,按理來說直接計算a*b是不能運算,但是計算d=a*b.T是可以的,結果是20,說明運算順序是先轉置再計算a與b轉置的積,*作為矩陣乘法,值得注意的在執(zhí)行*運算的時候必須符合行列原則。

numpy中tile()函數(shù)的用法

b = tile(a,(m,n)):即是把a數(shù)組里面的元素復制n次放進一個數(shù)組c中,然后再把數(shù)組c復制m次放進一個數(shù)組b中,通俗地講就是將a在行方向上復制m次,在列方向上復制n次。

python中的 sum 和 np.sum 是不一樣的,如果只寫sum的話,表示的是數(shù)組中對應的維度相加,如果寫 np.sum 的話,表示一個數(shù)組中的維數(shù)和列數(shù)上的數(shù)都加在一起。

如下圖所示:

補充:總結:numpy中三個乘法運算multiply,dot和* 的區(qū)別

引言:

本人在做機器學習的練習1的時候,時常拋出錯誤:

在這里插入圖片描述

Not aligned是什么意思呢?

意思是兩個矩陣相乘無意義。

線性代數(shù)中mxn 和 nxp的矩陣才能相乘,其結果是mxp的矩陣。

出錯源代碼:

def gradientDescent(X,y,theta,alpha,iteration):
    colunms = int(theta.ravel().shape[1])
    thetai = np.matrix(np.zeros(theta.shape))
    cost = np.zeros(iteration)
                       
    for i in range(iteration):
        error = X*theta.T-y
        for j in range(colunms):
            a = np.sum(error*X[:,j])/len(X) ########## error!
            thetai[0,j] = thetai[0,j] - alpha*a
            
        theta = thetai    
        cost[i] = computeCost(X, y, theta)        
    return theta,cost

這里error是一個nx1的矩陣,theta.T也是一個nx1的矩陣。

而矩陣之間*運算符表示矩陣乘法。我們這里想實現(xiàn)矩陣的對應元素相乘,因此應該用np.multiply()實現(xiàn)。

總結:

(讀者可使用簡單的舉例自行驗證)

1.*用法:

矩陣與矩陣:矩陣乘法(matrix)

數(shù)組與數(shù)組:對應位置相乘(array)

2.np.dot()用法:

矩陣相乘的結果

3.np.multiply()用法:

數(shù)組、矩陣都得到對應位置相乘。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python實現(xiàn)的連接mssql數(shù)據(jù)庫操作示例

    Python實現(xiàn)的連接mssql數(shù)據(jù)庫操作示例

    這篇文章主要介紹了Python實現(xiàn)的連接mssql數(shù)據(jù)庫操作,結合實例形式分析了Python安裝pymssql模塊以及基于pymssql模塊連接sql2008 R2數(shù)據(jù)庫的具體操作技巧,需要的朋友可以參考下
    2018-08-08
  • Python編寫可視化界面的詳細教程(Python+PyCharm+PyQt)

    Python編寫可視化界面的詳細教程(Python+PyCharm+PyQt)

    最近開始學習Python,但只限于看理論,編幾行代碼,覺得沒有意思,就想能不能用Python編寫可視化的界面,遂查找了相關資料,發(fā)現(xiàn)了PyQt,所以本文介紹了Python+PyCharm+PyQt編寫可視化界面的詳細教程,需要的朋友可以參考下
    2024-07-07
  • Python Django切換MySQL數(shù)據(jù)庫實例詳解

    Python Django切換MySQL數(shù)據(jù)庫實例詳解

    這篇文章主要介紹了Python Django切換MySQL數(shù)據(jù)庫實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • python繪制散點圖和折線圖的方法

    python繪制散點圖和折線圖的方法

    這篇文章主要為大家詳細介紹了python繪制散點圖和折線圖的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Python定時器線程池原理詳解

    Python定時器線程池原理詳解

    這篇文章主要介紹了Python定時器線程池原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Python+matplotlib繪制條形圖和直方圖

    Python+matplotlib繪制條形圖和直方圖

    Matplotlib是Python的繪圖庫,它能讓使用者很輕松地將數(shù)據(jù)圖形化,并且提供多樣化的輸出格式。本文將為大家介紹如何用matplotlib繪制條形圖和直方圖,感興趣的朋友可以學習一下
    2022-04-04
  • caffe的python接口deploy生成caffemodel分類新的圖片

    caffe的python接口deploy生成caffemodel分類新的圖片

    這篇文章主要為大家介紹了caffe的python接口生成deploy文件學習以及用訓練好的模型(caffemodel)來分類新的圖片示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Python線程池ThreadPoolExecutor使用方式

    Python線程池ThreadPoolExecutor使用方式

    這篇文章主要介紹了Python線程池ThreadPoolExecutor使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python接口測試之如何使用requests發(fā)起請求

    Python接口測試之如何使用requests發(fā)起請求

    這篇文章主要介紹了Python接口測試之如何使用requests發(fā)起請求問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python 文件和輸入輸出小結

    Python 文件和輸入輸出小結

    Python 是面向對象編程語言,文件也是一種類,下面簡單介紹下,方便需要的朋友
    2013-10-10

最新評論

万年县| 盐城市| 汾阳市| 改则县| 晋中市| 外汇| 兰西县| 兰西县| 乌海市| 藁城市| 荔波县| 巴林左旗| 婺源县| 乃东县| 云浮市| 商都县| 浦县| 黄大仙区| 南郑县| 库车县| 平舆县| 察隅县| 太保市| 丽水市| 诸城市| 会同县| 汕尾市| 荣成市| 涟源市| 高密市| 徐州市| 运城市| 金阳县| 金沙县| 高安市| 齐齐哈尔市| 镇原县| 永昌县| 老河口市| 桃园市| 嘉黎县|