向量與向量的點乘是逐個元素相乘後求和。
矩陣與矩陣的點乘就是矩陣乘法。
在 python 中可使用 numpy.dot 或 @ 實現。方陣還可採用numpy.matmul。
example
import numpy as np
a = np.array([1
,1,1
])b = np.array([1
,2,3
])a = np.array([[
1,2,
3],[
4,5,
6]])
b = np.array([[
7,8]
,[9,
10],[
11,12]
])ab = np.dot(a, b)
ab = np.dot(a, b)
print
(ab)
print
(ab)
print
(a@b)
6
[[ 58 64]
[139 154]]
[[ 58 64]
[139 154]]
叉乘,又叫向量積。
example
import numpy as np
a = np.array([1
,1,1
])b = np.array([1
,2,3
])a = np.array([[
1,2,
3],[
4,5,
6]])
b = np.array([[
7,8]
,[9,
10],[
11,12]
])ab = np.cross(a, b)
# ab = np.cross(a, b)
print
(ab)
[ 1 -2 1]
cross這個函式返回的是兩個向量叉乘的結果,傳入兩個不同階矩陣a和b會報錯。
example
import numpy as np
a = np.array([1
,1,1
])b = np.array([1
,2,3
])a = np.array([[
1,2,
3],[
4,5,
6]])
b = np.array([[
7,8]
,[9,
10],[
11,12]
])ab = np.kron(a, b)
ab = np.kron(a, b)
print
(ab)
print
(ab)
[1 2 3 1 2 3 1 2 3]
[[ 7 8 14 16 21 24]
[ 9 10 18 20 27 30]
[11 12 22 24 33 36]
[28 32 35 40 42 48]
[36 40 45 50 54 60]
[44 48 55 60 66 72]]
在這裡注意哈達瑪積和哈達瑪矩陣。
哈達瑪矩陣是由+1和-1元素構成的且滿足hn*hn』=ni(這裡hn』為hn的轉置,i為單位方陣)的n階方陣。
可以由from scipy.linalg import hadamard
生成。
哈達瑪積是矩陣的一類運算,是兩個同階矩陣的對應元素相乘。
在 python 中可直接由 * 完成。
如果矩陣是由numpy.matrix定義的,則 * 完成的矩陣乘法運算,即上述的點乘。
example
import numpy as np
a = np.array([1
,1,1
])b = np.array([1
,2,3
])a = np.array([[
1,2,
3],[
4,5,
6]])
c = np.array([[
10,11,
12],[
13,14,
15]])
ac = a*c
print
(a*b)
print
(ac)
[1 2 3]
[[10 22 36]
[52 70 90]]
numpy 向量 矩陣的乘法
import numpy as np一維向量與一維向量 一維向量與一維向量 vec1 np.array 1 2,3 vec2 np.array 4 5,6 np.inner 對應位置的元素相乘相加求和 res inner1 np.inner vec1,vec2 32 對應位置的元素相乘 成為新矩陣該...
Numpy 中的矩陣向量乘法
元素乘法 np.multiply a,b 矩陣乘法 np.dot a,b 或 np.matmul a,b 或 a.dot b 唯獨注意 在 np.array 中過載為元素乘法,在 np.matrix 中過載為矩陣乘法 對於np.array物件 a array 1,2 3,4 array中對應元素乘法...
矩陣乘法 NOI2013 向量內積
兩個 d 維向量 a a1,a2,ad 與 b b1,b 2,bd 的內積為其相對應維度的權值的乘積和,即 a b i 1 daib i a1 b1 a 2b2 ad bd現在有 n 個 d維向量 x1 x2,xn 小喵喵想知道是否存在兩個向量的內積為 k 的倍數。請幫助她解決這個問題。第一行包含 ...