Python的向量和矩陣乘法意義大全包括dot和*的區別(2020)
Python的向量和矩陣乘法意義大全
最近在用python練習演算法,牽涉到一些數學公式,但對python各個相乘符號的意義不是很瞭解,索性就都實現了一遍,羅列在下面啦,也可以自己複製過去一個一個驗證啦?
#python 矩陣和向量相乘的意義
#Author:sw
#Time:2020/10/10
import numpy as np
#向量與向量相乘
a = np.array([1,2]) #為行向量(1,2) shapes(2,)
b = np.array([1,2,3])#為行向量(1,2,3) shapes(3,)
#print(a*b) #會報錯
#print(a.dot(b))#顯然也會報錯
c = np.array([1,1,2])#為行向量(1,1,2) shapes(3,)
# print(b*c) #答案為[1,2,6] 為對應位置的數相乘(*)
# print(c*b) #答案為[1,2,6] 為對應位置的數相乘(*)
# print(b.dot(c))#答案為9,執行的是矩陣乘法,自動轉置了
# print(c.dot(b))#答案為9,執行的是矩陣乘法,自動轉置了
# print(c.T.dot(b))#答案為9,執行的是矩陣乘法,自己轉置也行
# print(b.T.dot(c))#答案為9,執行的是矩陣乘法,自己轉置也行
#向量和矩陣相乘
d=np.array([[2,1,3],[1,1,1],[1,1,1]]) #為矩陣[[2 1 3]
# [1 1 1]
# [1 1 1]]
# print(a*d)#顯然報錯,維數不符合矩陣乘法的規則
# print(b*d) #答案為[[2 2 9]
# [1 2 3]
# [1 2 3]]
#很容易看出來這是矩陣每一行對應位置的數和行向量對應位置的數相乘(*)了
#print(d*b)#交換順序答案不變
#print(b.T*d)#答案與上面相同,說明矩陣和向量相乘(*)一定是對應位置,無論是行向量還是列向量
#print(d*b.T)#答案與上面相同,說明矩陣和向量相乘(*)一定是對應位置,無論向量在前還是在後
# print(d.dot(a))#顯然報錯,維數不符合矩陣乘法的規則
# print(b.dot(d))#答案為[7 6 8],7=1*2+2*1+3*1;6=1*1+2*1+3*1,8=3*1+2*1+3*1
#答案的第一列的數字由行向量b乘以矩陣第一列按矩陣乘法得到,第二列和第三列一樣的方法得到
# print(d.dot(b))#答案為[13 6 6],每一行的數字由矩陣對應行乘以向量對應位置得到,例如13=2*1+1*2+3*3
#可以想象為矩陣乘以了一個列向量
#矩陣與矩陣相乘
e=np.array([[1,1,1],[1,2,1],[3,1,1]]) #為矩陣[[1 1 1]
# [1 1 1]
# [3 1 1]]
# print(d*e) #答案為[[2 1 3]
# [1 2 1]
# [3 1 1]]
#可以看到為對應位置數乘
# print(e*d) #答案與上面相同
# print(e.dot(d)) #答案為 [[ 4 3 5]
# [ 5 4 6]
# [ 8 5 11]]
# 和我們熟悉的矩陣乘法規則同
# print(d.dot(e)) #答案為 [[12 7 6]
# [ 5 4 3]
# [ 5 4 3]]
# 和我們熟悉的矩陣乘法規則同,第一個矩陣的行和第二個矩陣的列相乘
相關文章
- 矩陣的特徵值和特徵向量矩陣特徵
- 向量和矩陣的座標變換7矩陣
- 奇異矩陣與非奇異矩陣的定義與區別矩陣
- Eigen教程(3)之矩陣和向量的運算矩陣
- 向量和矩陣求導公式總結矩陣求導公式
- 三維旋轉矩陣 左乘和右乘分析矩陣
- Python陣列和列表的區別?Python學習教程Python陣列
- 三維空間變換中旋轉矩陣左乘與右乘的區別矩陣
- 向量和矩陣的座標變換(下標記法)7矩陣
- [Python]-機器學習Python入門《Python機器學習手冊》-01-向量、矩陣和陣列Python機器學習矩陣陣列
- 機器學習中的矩陣向量求導(五) 矩陣對矩陣的求導機器學習矩陣求導
- Python中is和==的區別Python
- Python 中 is 和 == 的區別Python
- golang切片和陣列的區別Golang陣列
- 矩陣和陣列矩陣陣列
- 矩陣的最短距離和矩陣
- 伴隨矩陣和逆矩陣的關係證明矩陣
- 2.12 求下列矩陣的特徵值和特徵向量的數值解和符號解 (-1 1 0 -4 3 0 1 0 2)的3*3矩陣矩陣特徵符號
- python的type和isinstance的區別Python
- python ruturn 和 print 的區別Python
- 第四章:多維陣列和矩陣 ------------- 4.8 子矩陣的最大累加和陣列矩陣
- 機器學習中的矩陣向量求導(四) 矩陣向量求導鏈式法則機器學習矩陣求導
- 基向量 變換矩陣矩陣
- Python3中_和__的用途和區別Python
- 2020 blur()和onblur的使用區別
- 卷積運算元的矩陣向量乘積表示&一維離散降質模型卷積矩陣模型
- JS陣列中(for...in)和(for...of)的區別JS陣列
- Python中的@staticmethod和@classmethod的區別PythonSSM
- 矩陣指數的定義矩陣
- django classonlymethod 和 python classmethod的區別DjangoPythonSSM
- 認清Python下==和is的區別Python
- Python教程:return和yield的區別Python
- Python中字典和json的區別!PythonJSON
- python中break和continue的區別Python
- python和r語言的區別PythonR語言
- PHP, Python和Java的區別分享PHPPythonJava
- python is和==的區別是什麼?Python
- ../和./和/的區別