日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

python中dot函數運算過程總結_python

作者:zhaoweiwei369 ? 更新時間: 2022-11-07 編程語言

本文結合其他博主的一些介紹總結了dot函數運算過程

基本簡介

dot函數為numpy庫下的一個函數,主要用于矩陣的乘法運算,其中包括:向量內積、多維矩陣乘法和矩陣與向量的乘法。

1. 向量內積

向量其實是一維的矩陣,兩個向量進行內積運算時,需要保證兩個向量包含的元素個數是相同的。

例1:

import numpy as np
x = np.array([1, 2, 3, 4, 5, 6, 7])
y = np.array([2, 3, 4, 5, 6, 7, 8])
result = np.dot(x, y)
print(result)

輸出結果:

168

計算過程就是將向量中對應元素相乘,再相加所得。即普通的向量乘法運算。

2. 矩陣乘法運算

注意:

1.數組的運算是元素級的,數組相乘的結果是各對應元素的積組成的數組,而對于矩陣而言,需要求的是點積

2.兩個矩陣(x, y)如果可以進行乘法運算,需要滿足以下條件:

? ?x為 m×n 階矩陣,y為 n×p 階矩陣,

? ?則相乘的結果 result 為 m×p 階矩陣。例子如下

例2:

import numpy as np
x = np.array([[1, 2, 3],
[3, 4, 4]])
y = np.array([[0, 1, 1, 1],
[1, 2, 0, 1],
[0, 0, 2, 1]])
result = np.dot(x, y)
print(result)
print("x階數:" + str(x.shape))
print("y階數:" + str(y.shape))
print("result階數:" + str(result.shape))

結果為:

[[ 2 5 7 6]

[ 4 11 11 11]]

x階數:(2, 3)

y階數:(3, 4)

result階數:(2, 4)

下面我們來分析一下一維數組到多維數組之間的運算過程

2.1如下單個數的dot函數運算所示:

np.dot(5,8)40

2.2如下一維數組的dot函數運算所示:

#如果arr1和arr2都是一維數組,那么它返回的就是向量的內積

arr1=np.array([2,3])
arr2=np.array([4,5])
np.dot(arr1,arr2)
#23

如圖所示:?

2.3如下二維數組的dot函數運算所示:

#如果arr5 和arr6都是二維數組,那么它返回的是矩陣乘法

arr5=np.array([[2,3],[4,5]])
arr6=np.array([[6,7],[8,9]])
np.dot(arr5,arr6)
"""
array([36,4],
? ? ? ? ? [64,73])
"""

運算過程如下所示:?

2.4如下二維數組與三維數組的dot函數運算:

#arr7二維數組與arr8三維數組的dot函數矩陣運算

arr7=np.array([[2,3,4],[5,6,7]])
arr8=np.array([[0,1,2],[3,4,5],[6,7,8]])
np.dot(arr7,arr8)
"""
array([33,42,51],[60,78,96])
"""

2.5如下多維數組的dot函數運算所示:

#多維數組的dot函數矩陣運算
arr12=np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]])
arr13=np.array([[0,1,2],[3,4,5],[6,7,8]])
np.dot(arr12,arr13)
"""
array([15,18,21],
????????[42,54,66],
????????[69,90,111],
????????[96,126,156])
"""

注意:

dot()函數可以通過NumPy庫調用,也可以由數組實例對象進行調用。例如:a.dot(b)?與?np.dot(a,b)效果相同。但矩陣積計算不遵循交換律,np.dot(a,b)?和 np.dot(b,a)?得到的結果是不一樣的。

總結

原文鏈接:https://blog.csdn.net/qq_36297093/article/details/125044307

欄目分類
最近更新