網站首頁 編程語言 正文
本文結合其他博主的一些介紹總結了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
相關推薦
- 2022-09-18 聊聊C++中右值引用和移動構造函數的使用_C 語言
- 2022-05-14 react中的axios模塊你了解嗎_React
- 2022-01-09 webpack-code split代碼分割
- 2022-05-22 C語言鏈接屬性的實踐應用_C 語言
- 2022-12-28 詳解Flink同步Kafka數據到ClickHouse分布式表_數據庫其它
- 2022-08-29 python中內置函數ord()返回字符串的ASCII數值實例詳解_python
- 2022-08-01 C語言深入探索遞歸的特點_C 語言
- 2022-06-13 安裝Docker配置阿里云鏡像加速(圖文教程)_docker
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支