網站首頁 編程語言 正文
1. 介紹
在數學上,矩陣(Matrix)是一個按照矩形陣列排列的負數或實數集合,但在NumPy中,矩陣np.matrix
是數組np.ndarray
的派生類。這意味著矩陣本質上是? ?一個數組,擁有數組的所有屬性和方法;同時,矩陣又有一些不同于數組的特性和方法首先,矩陣是二維的,不能像數組一樣幻化成任意維度,即使展開或切片,返回也是二維的;其次,矩陣和矩陣、矩陣和數組都可以做加減乘除運算,運算結果都是返回矩陣;最后,矩陣的乘法不同于數組乘法
2. 創建矩陣
np.mat()
函數用于創建矩陣,它可以接受列表、數組甚至是字符串等形式的參數,還可以使用dtype參數指定數據類型,
其代碼如下:
import numpy as np import numpy.matlib as mat print(np.mat([[1,2,3],[4,5,6]], dtype=np.int)) # 使用列表創建矩陣 print(np.mat(np.arange(6).reshape((2,3)))) # 使用數組創建矩陣 print(np.mat('1 4 7; 2 5 8; 3 6 9')) # 使用Matlab風格的字符串創建矩陣
此外,和生成特殊值數組類似,numpy.matlib
子模塊也提供了多個函數用于生成特殊值矩陣和隨機數矩陣
print(mat.zeros((2,3))) # 全0矩陣 print(mat.ones((2,3))) # 全1矩陣 print(mat.eye(3)) # 單位矩陣 print(mat.empty((2,3))) # 空矩陣 print(mat.rand((2,3))) # [0,1)區間隨機數矩陣 print(mat.randn((2,3))) # 均值0方差1的高斯(正態)分布矩陣
3. 矩陣特有屬性
矩陣有幾個特有的屬性,如轉置矩陣、逆矩陣、共軛矩陣、共軛轉置矩陣等。
import numpy as np m = np.mat(np.arange(6).reshape((2,3))) print(m) print(m.T) # 返回自身的轉置矩陣 print(m.H) # 返回自身的共軛轉置矩陣 print(m.I) # 返回自身的逆矩陣 print(m.A) # 返回自身數據的視圖(ndarray類)
4. 矩陣乘法
矩陣運算和數組運算大致相同,只有乘法運算有較大差別。兩個數組相乘就是對應元素相乘,條件是兩個數組的結構相同。事實上,及時兩個數組的結構不同,只要滿足特定條件,也能做乘法運算
import numpy as np a = np.random.randint(0,10,(2,3)) print(a) b = np.random.randint(0,10,3) print(b) print(a*b) # shape不同的兩個數組也可以相乘 print(b*a)
除了對應元素相乘,數組還可以使用np.dot()
函數相乘
a = np.random.randint(0,10,(2,3)) b = np.random.randint(0,10,3) c = np.random.randint(0,10,(3,2)) print(np.dot(a,b)) print(np.dot(a,c))
屬于數組而言,使用星號相乘和使用np.dot()
函數相乘是完全不同的兩種乘法:對于矩陣來說,不管是使用星號相乘還是使用np.dot()
函數相乘,結果都是np.dot()
函數相乘的結果,因為矩陣沒有對應元素相乘這個概念。np.dot()
函數實現的乘法就是矩陣乘法
不是所有的矩陣都能相乘,矩陣乘法不滿足交換律。概括來說,就是矩陣A的各行逐一去乘矩陣B的各列。例如,矩陣A的第1行和矩陣B的第1列,它們的元素個數一定相等,對應元素相乘后求和的值作為結果矩陣第1行第1列的值。又如,矩陣A的第3行和矩陣B的第3列,對應元素相乘后求和的值作為結果矩陣第3行第3列的值。以此類推,最終得到矩陣A乘矩陣B的結果矩陣
原文鏈接:https://blog.csdn.net/feizuiku0116/article/details/126705902
相關推薦
- 2022-07-08 C#之Socket(套接字)通信_C#教程
- 2022-08-08 Android實現頁面跳轉_Android
- 2022-10-17 Python?Django源碼運行過程解析_python
- 2022-12-28 Linux下rm誤刪除文件的三種恢復方法_linux shell
- 2023-03-02 Flutter有狀態組件StatefulWidget生命周期詳解_Android
- 2022-04-23 一起來了解一下C++的結構體?struct_C 語言
- 2022-04-22 nvm切換node版本后提示npm : 無法將“npm”項識別為 cmdlet、函數、腳本文件或可運
- 2022-10-23 python?groupby函數實現分組選取最大值與最小值_python
- 最近更新
-
- 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同步修改后的遠程分支