向量 矩陣的幾種乘法

2021-10-05 15:42:09 字數 2393 閱讀 1065

向量與向量的點乘是逐個元素相乘後求和。

矩陣與矩陣的點乘就是矩陣乘法。

在 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 的倍數。請幫助她解決這個問題。第一行包含 ...