点积与叉积

  • 1. 向量的点积与叉积
    • 1.1 向量的点积
    • 1.2 向量的叉积
  • 2 矩阵的点积与叉积
    • 2.1 矩阵的点积
    • 2.2 矩阵的叉积
  • 3. 元素积
  • 4. 克罗内克积

1. 向量的点积与叉积

1.1 向量的点积

数量积又称标量积(Scalar product)点积(Dot product),在欧几里得空间(Euclidean space)中称为内积(Inner product),对应元素相乘相加,结果是一个标量(即一个数)

对于向量a⃗=(a1,a2),b⃗=(b1,b2)\vec{a}=\left( {{a}_{1}},{{a}_{2}} \right),\vec{b}=\left( {{b}_{1}},{{b}_{2}} \right)a=(a1​,a2​),b=(b1​,b2​),两者的数量积:a⃗⋅b⃗=a1b1+a2b2\vec{a}\cdot \vec{b}= {{a}_{1}}{{b}_{1}}+{{a}_{2}}{{b}_{2}}a⋅b=a1​b1​+a2​b2​ a⃗⋅b⃗\vec{a}\cdot \vec{b}a⋅b的几何意义是a⃗\vec{a}a在b⃗\vec{b}b方向上的投影(仅在二维、三维空间向量有意义):a⃗⋅b⃗=∣a⃗∣∗∣b⃗∣∗cosθ\vec{a}\cdot \vec{b}=\left| {\vec{a}} \right|* | {\vec{b}} | *cos\theta a⋅b=∣a∣∗∣b∣∗cosθ其中,∣a⃗∣\left| {\vec{a}} \right|∣a∣ 、∣b⃗∣|{\vec{b}}|∣b∣分别为向量a⃗\vec{a}a、b⃗\vec{b}b的模,θ\thetaθ为向量a⃗\vec{a}a、b⃗\vec{b}b的夹角。

对于 nnn维向量 a⃗=(a1,a1,...,an),b⃗=(b1,b2,...,bn)\vec{a}=\left( {{a}_{1}},{{a}_{1}},..., {{a}_{n}} \right)~,\vec{b}=\left( {{b}_{1}},{{b}_{2}} ,...,{{b}_{n}}\right)a=(a1​,a1​,...,an​) ,b=(b1​,b2​,...,bn​),两者的数量积:a⃗⋅b⃗=a1b1+a2b2+...+anbn\vec{a}\cdot \vec{b}= {{a}_{1}}{{b}_{1}}+{{a}_{2}}{{b}_{2}}+...+{{a}_{n}}{{b}_{n}} a⋅b=a1​b1​+a2​b2​+...+an​bn​

numpy中 使用np.dotnumpy.inner()实现向量的点积

举例a⃗=(1,2,3)b⃗=(4,5,6)\vec{a} = (1,2,3) \;\;\;\; \vec{b} = (4,5,6)a=(1,2,3)b=(4,5,6)a⃗⋅b⃗=1×4+2×5+3×6=32\vec{a}\cdot \vec{b}= 1\times 4 + 2 \times 5 +3\times 6 = 32a⋅b=1×4+2×5+3×6=32

import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
## 数量积  使用np.dot或np.inner
print(np.dot(a,b))

1.2 向量的叉积

向量积又称矢量积(Vector product)叉积(Cross product)外积(Outer product)结果是一个向量

对于向量a⃗=(a1,a2,a3)b⃗=(b1,b2,b3)\vec{a}=\left( {{a}_{1}},{{a}_{2}}, {{a}_{3}} \right)~\vec{b}=\left( {{b}_{1}},{{b}_{2}} ,{{b}_{3}}\right)a=(a1​,a2​,a3​) b=(b1​,b2​,b3​),两者的叉积为a⃗\vec{a}a和b⃗\vec{b}b的法向量,该向量垂直于a⃗\vec{a}a和b⃗\vec{b}b构成的平面。a⃗×b⃗=∣ijka1a2a3b1b2b3∣=(a2b3−b2a3)i⃗−(a1b3−b1a3)j⃗+(a1b2−b1a2)k⃗\vec{a} \times \vec{b}= \begin{vmatrix}i & j & k \\ a_1 & a_2 & a_3 \\ b_1 & b_2 & b_3 \\ \end{vmatrix} = (a_2b_3-b_2a_3)\vec{i} - (a_1b_3-b_1a_3)\vec{j}+(a_1b_2-b_1a_2)\vec{k}a×b=∣∣​ia1​b1​​ja2​b2​​ka3​b3​​∣∣​=(a2​b3​−b2​a3​)i−(a1​b3​−b1​a3​)j​+(a1​b2​−b1​a2​)k其中,i,j,ki,j,ki,j,k分别是X,Y,ZX,Y,ZX,Y,Z轴方向的单位向量.

该向量的模∣a⃗×b⃗∣=∣a⃗∣∗∣b⃗∣∗sinθ|\vec{a} \times \vec{b}| =\left| {\vec{a}} \right|*| {\vec{b}} |*sin\theta ∣a×b∣=∣a∣∗∣b∣∗sinθ其中,∣a⃗∣\left| {\vec{a}} \right|∣a∣ 、∣b⃗∣|{\vec{b}}|∣b∣分别为向量a⃗\vec{a}a、b⃗\vec{b}b的模,θ\thetaθ为向量a⃗\vec{a}a、b⃗\vec{b}b的夹角。

即,叉积的长度∣a⃗×b⃗∣|\vec{a} \times \vec{b}|∣a×b∣为向量a⃗\vec{a}a、b⃗\vec{b}b共起点时,构成平行四边形的面积。

numpy中 使用np.cross实现向量的叉积

举例a⃗=(1,2,3)b⃗=(4,5,6)\vec{a} = (1,2,3) \;\;\;\; \vec{b} = (4,5,6)a=(1,2,3)b=(4,5,6)a⃗⋅b⃗=(2×6−3×5,4×3−1×6,1×5−2×4)=(−3,6,−3)\vec{a}\cdot \vec{b}=(2\times 6 -3\times 5 , 4 \times 3 - 1\times 6,1\times 5 - 2 \times 4)=(-3,6,-3)a⋅b=(2×6−3×5,4×3−1×6,1×5−2×4)=(−3,6,−3)

import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
## 叉积  使用np.cross
print(np.cross(a,b))

点积与叉积小结

名称 点积/数量积/标量积/内积/ 叉积/向量积/矢量积/外积
输入(以R3R^3R3为例) a⃗=(a1,a2,a3),b⃗=(b1,b2,b3)\vec{a}=\left( {{a}_{1}},{{a}_{2}}, {{a}_{3}} \right),\vec{b}=\left( {{b}_{1}},{{b}_{2}} ,{{b}_{3}}\right)a=(a1​,a2​,a3​),b=(b1​,b2​,b3​) a⃗=(a1,a2,a3),b⃗=(b1,b2,b3)\vec{a}=\left( {{a}_{1}},{{a}_{2}}, {{a}_{3}} \right),\vec{b}=\left( {{b}_{1}},{{b}_{2}} ,{{b}_{3}}\right)a=(a1​,a2​,a3​),b=(b1​,b2​,b3​)
运算 a⃗⋅b⃗=a1b1+a2b2+a3b3\vec{a}\cdot \vec{b}= {{a}_{1}}{{b}_{1}}+{{a}_{2}}{{b}_{2}}+{{a}_{3}}{{b}_{3}} a⋅b=a1​b1​+a2​b2​+a3​b3​ a⃗×b⃗=∣ijka1a2a3b1b2b3∣\vec{a} \times \vec{b}=\begin{vmatrix}i & j & k \\ a_1 & a_2 & a_3 \\ b_1 & b_2 & b_3 \\ \end{vmatrix}a×b=∣∣​ia1​b1​​ja2​b2​​ka3​b3​​∣∣​
输出 数值(标量):a⃗\vec{a}a在b⃗\vec{b}b方向上的投影与∣b⃗∣|\vec{b}|∣b∣的乘积,即 ∣a⃗∣∗∣b⃗∣∗cosθ| \vec{a} |* | \vec{b}|*cos\theta∣a∣∗∣b∣∗cosθ 向量(矢量):a⃗\vec{a}a和b⃗\vec{b}b的法向量,该向量的模为 ∣a⃗∣∗∣b⃗∣∗sinθ| \vec{a} |* | \vec{b}|*sin\theta∣a∣∗∣b∣∗sinθ

注:数量、向量常用于数学;而标量、矢量常用于物理

2 矩阵的点积与叉积

2.1 矩阵的点积

对于AAA矩阵(m×sm \times sm×s阶),BBB矩阵(s×ns \times ns×n阶)(A的列数与B的行数相等),
A=[a11a12⋯a1sa21a22⋯a2s⋯⋯⋱⋮am1am2⋯ams]B=[b11b12⋯b1nb21b22⋯b2n⋯⋯⋱⋮bs1bs2⋯bsn]A=\left[ \begin{matrix} {{a}_{11}} & {{a}_{12}} & \cdots & {{a}_{1s}} \\ {{a}_{21}} & {{a}_{22}} & \cdots & {{a}_{2s}} \\ \cdots & \cdots & \ddots & \vdots \\ {{a}_{m1}} & {{a}_{m2}} & \cdots & {{a}_{ms}} \\ \end{matrix} \right]~~~~~B=\left[ \begin{matrix} {{b}_{11}} & {{b}_{12}} & \cdots & {{b}_{1n}} \\ {{b}_{21}} & {{b}_{22}} & \cdots & {{b}_{2n}} \\ \cdots & \cdots & \ddots & \vdots \\ {{b}_{s1}} & {{b}_{s2}} & \cdots & {{b}_{sn}} \\ \end{matrix} \right]A=⎣⎡​a11​a21​⋯am1​​a12​a22​⋯am2​​⋯⋯⋱⋯​a1s​a2s​⋮ams​​⎦⎤​     B=⎣⎡​b11​b21​⋯bs1​​b12​b22​⋯bs2​​⋯⋯⋱⋯​b1n​b2n​⋮bsn​​⎦⎤​两者的点积,即矩阵相乘的结果C=ABC=ABC=AB是m×nm\times nm×n阶矩阵,
C=AB=[c11c12⋯c1nc21c22⋯c2n⋯⋯⋱⋮cm1cm2⋯cmn]C=AB=\left[ \begin{matrix} {{c}_{11}} & {{c}_{12}} & \cdots & {{c}_{1n}} \\ {{c}_{21}} & {{c}_{22}} & \cdots & {{c}_{2n}} \\ \cdots & \cdots & \ddots & \vdots \\ {{c}_{m1}} & {{c}_{m2}} & \cdots & {{c}_{mn}} \\ \end{matrix} \right]C=AB=⎣⎡​c11​c21​⋯cm1​​c12​c22​⋯cm2​​⋯⋯⋱⋯​c1n​c2n​⋮cmn​​⎦⎤​其中,矩阵CCC中的元素满足cij=∑k=1saikbkj{{c}_{ij}}=\sum_{k=1}^{s}{{a}_{ik}}{{b}_{kj}}cij​=k=1∑s​aik​bkj​举例A1=[1234]B1=[5678],A2=[123123]B2=[123]A_1 = \begin{bmatrix}1 & 2 \\3 & 4\end{bmatrix}\;\;\;\; B_1 = \begin{bmatrix}5 & 6 \\7 & 8\end{bmatrix}, \;\;\;\; A_2 = \begin{bmatrix}1 & 2 & 3\\1 & 2 & 3\end{bmatrix}\;\;\;\; B_2 = \begin{bmatrix}1\\2\\3 \end{bmatrix} \;\;\;\;A1​=[13​24​]B1​=[57​68​],A2​=[11​22​33​]B2​=⎣⎡​123​⎦⎤​A1B1=[19224350],A2B2=[1414]A_1B_1 = \begin{bmatrix}19 & 22 \\43 & 50\end{bmatrix}, \;\;\;\; A_2B_2 = \begin{bmatrix}14&14\end{bmatrix}A1​B1​=[1943​2250​],A2​B2​=[14​14​]numpy实现

import numpy as np
A1 = np.array([[1,2],[3,4]])
B2 = np.array([[5,6],[7,8]])
A2 = np.array([[1,2,3],[1,2,3]])
B2 = np.array([1,2,3])
## 数量积  使用np.dot
print(np.dot(A1,B1))
print(np.dot(A2,B2))

此外,numpyt提供了numpy.inner()函数,从字面意思理解是内积,其针对向量numpy.inner()numpy.dot()输出一致,但针对矩阵有所不同。

print(np.inner(A1,B1))

输出为[17233953]\begin{bmatrix}17 & 23 \\39 & 53\end{bmatrix}[1739​2353​]
其中,17=1×5+2×6,23=1×7+2×817=1 \times 5 +2\times 6,23 = 1\times 7 +2\times 817=1×5+2×6,23=1×7+2×839=3×5+4×6,53=3×7+4×839 = 3\times 5 +4\times 6,53=3\times7 +4\times 839=3×5+4×6,53=3×7+4×8

print(np.inner(A2,B2))

输出为[1414]\begin{bmatrix}14&14\end{bmatrix}[14​14​]

2.2 矩阵的叉积

针对矩阵并不存在叉积的概念,numpy中针对矩阵的叉积运算是按照向量的叉积进行运算。

举例
A1=[1234]B1=[5678],A2=[123123]B2=[123]A_1 = \begin{bmatrix}1 & 2 \\3 & 4\end{bmatrix}\;\;\;\; B_1 = \begin{bmatrix}5 & 6 \\7 & 8\end{bmatrix}, \;\;\;\; A_2 = \begin{bmatrix}1 & 2 & 3\\1 & 2 & 3\end{bmatrix}\;\;\;\; B_2 = \begin{bmatrix}1\\2\\3 \end{bmatrix} \;\;\;\;A1​=[13​24​]B1​=[57​68​],A2​=[11​22​33​]B2​=⎣⎡​123​⎦⎤​A1×B1=[−4−4],A2×B2=[000000]A_1 \times B_1 = \begin{bmatrix}-4&-4\end{bmatrix}, \;\;\;\; A_2 \times B_2 = \begin{bmatrix}0 & 0&0 \\0 & 0&0\end{bmatrix} A1​×B1​=[−4​−4​],A2​×B2​=[00​00​00​]numpy实现

import numpy as np
A1 = np.array([[1,2],[3,4]])
B1 = np.array([[5,6],[7,8]])
A2 = np.array([[1,2,3],[1,2,3]])
B2 = np.array([1,2,3])
## 叉积  使用np.cross
print(np.cross(A1,B1))
print(np.cross(A2,B2))

3. 元素积

元素积(element-wise product, point-wise product)又称哈达玛积(Hadamard product )、舒尔积逐项积,对应元素相乘,结果还是向量/矩阵。

对于 nnn维向量 a⃗=(a1,a1,...,an),b⃗=(b1,b2,...,bn)\vec{a}=\left( {{a}_{1}},{{a}_{1}},..., {{a}_{n}} \right)~,\vec{b}=\left( {{b}_{1}},{{b}_{2}} ,...,{{b}_{n}}\right)a=(a1​,a1​,...,an​) ,b=(b1​,b2​,...,bn​),两者的元素积:a⃗∗b⃗=(a1b1,a2b2,...,anbn)\vec{a} * \vec{b}= ({{a}_{1}{b}_{1}},{{a}_{2}}{{b}_{2}},...,{{a}_{n}}{{b}_{n}} ) a∗b=(a1​b1​,a2​b2​,...,an​bn​)对于同阶矩阵(m×nm \times nm×n)AAA、BBB,两者的哈达玛(Hadamard)积:A∘B=[a11b11a12b12⋯a1nb1na21b21a22b22⋯a2nb2n⋯⋯⋱⋮am1bm1am2bm2⋯amnbmn]A \circ B = \left[ \begin{matrix} {{a}_{11}{b}_{11}} & {{a}_{12}{b}_{12}} & \cdots & {{a}_{1n}{b}_{1n}} \\ {{a}_{21}{b}_{21}} & {{a}_{22}{b}_{22}} & \cdots & {{a}_{2n}{b}_{2n}} \\ \cdots & \cdots & \ddots & \vdots \\ {{a}_{m1}{b}_{m1}} & {{a}_{m2}{b}_{m2}} & \cdots & {{a}_{mn}{b}_{mn}} \\ \end{matrix} \right]A∘B=⎣⎡​a11​b11​a21​b21​⋯am1​bm1​​a12​b12​a22​b22​⋯am2​bm2​​⋯⋯⋱⋯​a1n​b1n​a2n​b2n​⋮amn​bmn​​⎦⎤​

numpy中 使用np.multiply*实现元素积

举例

向量:a⃗=(1,2,3)b⃗=(4,5,6)\vec{a} = (1,2,3) \;\;\;\; \vec{b} = (4,5,6)a=(1,2,3)b=(4,5,6) a⃗∘b⃗=(4,10,18)\vec{a} \circ \vec{b} =(4 , 10 , 18)a∘b=(4,10,18)矩阵:A1=[1234]B1=[5678],A2=[123123]B2=[123]A_1 = \begin{bmatrix}1 & 2 \\3 & 4\end{bmatrix}\;\;\;\; B_1 = \begin{bmatrix}5 & 6 \\7 & 8\end{bmatrix}, \;\;\;\; A_2 = \begin{bmatrix}1 & 2 & 3\\1 & 2 & 3\end{bmatrix}\;\;\;\; B_2 = \begin{bmatrix}1\\2\\3 \end{bmatrix} \;\;\;\;A1​=[13​24​]B1​=[57​68​],A2​=[11​22​33​]B2​=⎣⎡​123​⎦⎤​A1∘B1=[5122132],A2∘B2=[149149]A_1 \circ B_1 = \begin{bmatrix}5 & 12 \\21 & 32\end{bmatrix}, \;\;\;\; A_2 \circ B_2 = \begin{bmatrix}1 & 4 & 9\\1 & 4 & 9\end{bmatrix}\;\;\;\;A1​∘B1​=[521​1232​],A2​∘B2​=[11​44​99​]

import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
A1 = np.array([[1,2],[3,4]])
B1 = np.array([[5,6],[7,8]])
A2 = np.array([[1,2,3],[1,2,3]])
B2 = np.array([1,2,3])
## 数量积  使用np.multiply或*
print(np.multiply(a,b))
print(np.multiply(A1,B1))
print(np.multiply(A2,B2)) #阶数不一致的,numpy将进行广播确保一致

4. 克罗内克积

克罗内克积(Kronecker product)是两个任意大小的矩阵间的运算

对于对于AAA矩阵(m×nm \times nm×n阶),BBB矩阵(p×qp \times qp×q阶):A=[a11a12⋯a1na21a22⋯a2n⋯⋯⋱⋮am1am2⋯amn]B=[b11b12⋯b1qb21b22⋯b2q⋯⋯⋱⋮bp1bp2⋯bpq]A=\left[ \begin{matrix} {{a}_{11}} & {{a}_{12}} & \cdots & {{a}_{1n}} \\ {{a}_{21}} & {{a}_{22}} & \cdots & {{a}_{2n}} \\ \cdots & \cdots & \ddots & \vdots \\ {{a}_{m1}} & {{a}_{m2}} & \cdots & {{a}_{mn}} \\ \end{matrix} \right]~~~~~B=\left[ \begin{matrix} {{b}_{11}} & {{b}_{12}} & \cdots & {{b}_{1q}} \\ {{b}_{21}} & {{b}_{22}} & \cdots & {{b}_{2q}} \\ \cdots & \cdots & \ddots & \vdots \\ {{b}_{p1}} & {{b}_{p2}} & \cdots & {{b}_{pq}} \\ \end{matrix} \right]A=⎣⎡​a11​a21​⋯am1​​a12​a22​⋯am2​​⋯⋯⋱⋯​a1n​a2n​⋮amn​​⎦⎤​     B=⎣⎡​b11​b21​⋯bp1​​b12​b22​⋯bp2​​⋯⋯⋱⋯​b1q​b2q​⋮bpq​​⎦⎤​两者的克罗内克积C=A⊗BC=A \otimes BC=A⊗B是mp×nqmp×nqmp×nq阶的分块矩阵:C=A⊗B=[a11Ba12B⋯a1nBa21Ba22B⋯a2nB⋯⋯⋱⋮am1Bam2B⋯amnB]C=A \otimes B = \left[ \begin{matrix} {{a}_{11}B} & {{a}_{12}B} & \cdots & {{a}_{1n}} B \\ {{a}_{21}} B& {{a}_{22}}B & \cdots & {{a}_{2n}} B \\ \cdots & \cdots & \ddots & \vdots \\ {{a}_{m1}} B& {{a}_{m2}} B& \cdots & {{a}_{mn}}B \\ \end{matrix} \right]C=A⊗B=⎣⎡​a11​Ba21​B⋯am1​B​a12​Ba22​B⋯am2​B​⋯⋯⋱⋯​a1n​Ba2n​B⋮amn​B​⎦⎤​=[a11b11a11b12⋯a11b1q⋯⋯a1nb11a1nb12⋯a1nb1qa11b21a11b22⋯a11b2q⋯⋯a1nb21a1nb22⋯a1nb2q⋮⋮⋱⋮⋮⋮⋱⋮a11bp1a11bp2⋯a11bpq⋯⋯a1nbp1a1nbp2⋯a1nbpq⋮⋮⋮⋱⋮⋮⋮⋮⋮⋮⋱⋮⋮⋮am1b11am1b12⋯am1b1q⋯⋯amnb11amnb12⋯amnb1qam1b21am1b22⋯am1b2q⋯⋯amnb21amnb22⋯amnb2q⋮⋮⋱⋮⋮⋮⋱⋮am1bp1am1bp2⋯am1bpq⋯⋯amnbp1amnbp2⋯amnbpq]=\left[ \begin{matrix} {{a}_{11}{b}_{11}} & {{a}_{11}{b}_{12}} & \cdots & {{a}_{11}} {b}_{1q} & \cdots & \cdots &{{a}_{1n}{b}_{11}} & {{a}_{1n}{b}_{12}} & \cdots & {{a}_{1n}} {b}_{1q} \\ {{a}_{11}{b}_{21}} & {{a}_{11}{b}_{22}} & \cdots & {{a}_{11}} {b}_{2q} & \cdots & \cdots &{{a}_{1n}{b}_{21}} & {{a}_{1n}{b}_{22}} & \cdots & {{a}_{1n}} {b}_{2q} \\ \vdots & \vdots & \ddots & \vdots & & & \vdots & \vdots & \ddots & \vdots \\ {{a}_{11}{b}_{p1}} & {{a}_{11}{b}_{p2}} & \cdots & {{a}_{11}} {b}_{pq} & \cdots & \cdots &{{a}_{1n}{b}_{p1}} & {{a}_{1n}{b}_{p2}} & \cdots & {{a}_{1n}} {b}_{pq} \\ \vdots & \vdots & & \vdots & \ddots & & \vdots & \vdots & & \vdots \\ \vdots & \vdots & & \vdots & & \ddots & \vdots & \vdots & & \vdots \\ {{a}_{m1}{b}_{11}} & {{a}_{m1}{b}_{12}} & \cdots & {{a}_{m1}} {b}_{1q} & \cdots & \cdots &{{a}_{mn}{b}_{11}} & {{a}_{mn}{b}_{12}} & \cdots & {{a}_{mn}} {b}_{1q} \\ {{a}_{m1}{b}_{21}} & {{a}_{m1}{b}_{22}} & \cdots & {{a}_{m1}} {b}_{2q} & \cdots & \cdots &{{a}_{mn}{b}_{21}} & {{a}_{mn}{b}_{22}} & \cdots & {{a}_{mn}} {b}_{2q} \\ \vdots & \vdots & \ddots & \vdots & & & \vdots & \vdots & \ddots & \vdots \\ {{a}_{m1}{b}_{p1}} & {{a}_{m1}{b}_{p2}} & \cdots & {{a}_{m1}} {b}_{pq} & \cdots & \cdots &{{a}_{mn}{b}_{p1}} & {{a}_{mn}{b}_{p2}} & \cdots & {{a}_{mn}} {b}_{pq} \\ \end{matrix} \right]=⎣⎡​a11​b11​a11​b21​⋮a11​bp1​⋮⋮am1​b11​am1​b21​⋮am1​bp1​​a11​b12​a11​b22​⋮a11​bp2​⋮⋮am1​b12​am1​b22​⋮am1​bp2​​⋯⋯⋱⋯⋯⋯⋱⋯​a11​b1q​a11​b2q​⋮a11​bpq​⋮⋮am1​b1q​am1​b2q​⋮am1​bpq​​⋯⋯⋯⋱⋯⋯⋯​⋯⋯⋯⋱⋯⋯⋯​a1n​b11​a1n​b21​⋮a1n​bp1​⋮⋮amn​b11​amn​b21​⋮amn​bp1​​a1n​b12​a1n​b22​⋮a1n​bp2​⋮⋮amn​b12​amn​b22​⋮amn​bp2​​⋯⋯⋱⋯⋯⋯⋱⋯​a1n​b1q​a1n​b2q​⋮a1n​bpq​⋮⋮amn​b1q​amn​b2q​⋮amn​bpq​​⎦⎤​

numpy中 使用np.kron实现

举例A1=[123]B1=[456]A2=[1234]B2=[5678]A3=[123123]B3=[123]A_1 = \begin{bmatrix}1 \\ 2\\ 3 \end{bmatrix}\;B_1 = \begin{bmatrix}4\\5\\6 \end{bmatrix} \;A_2 = \begin{bmatrix}1 & 2 \\3 & 4\end{bmatrix}\;B_2 = \begin{bmatrix}5 & 6 \\7 & 8\end{bmatrix} \; A_3 = \begin{bmatrix}1 & 2 & 3\\1 & 2 & 3\end{bmatrix}\;B_3 = \begin{bmatrix}1\\2\\3 \end{bmatrix} A1​=⎣⎡​123​⎦⎤​B1​=⎣⎡​456​⎦⎤​A2​=[13​24​]B2​=[57​68​]A3​=[11​22​33​]B3​=⎣⎡​123​⎦⎤​A1⊗B1=[45681012121518]TA_1 \otimes B_1={\begin{bmatrix}4 & 5 & 6 & 8 &10 & 12 & 12 & 15&18\end{bmatrix}}^TA1​⊗B1​=[4​5​6​8​10​12​12​15​18​]TA2⊗B2=[5610127814161518202421242832]A_2 \otimes B_2 = \begin{bmatrix}5 &6&10&12 \\7 & 8&14&16\\15 & 18&20&24 \\21 &24&28&32\end{bmatrix}A2​⊗B2​=⎣⎡​571521​681824​10142028​12162432​⎦⎤​A3⊗B3=[123246369123246369]TA_3\otimes B_3 = { \begin{bmatrix}1 & 2&3 &2&4&6&3&6 & 9\\1 & 2&3 &2&4&6&3&6 & 9\end{bmatrix}}^TA3​⊗B3​=[11​22​33​22​44​66​33​66​99​]T

import numpy as np
A1 = np.array([1,2,3])
B1 = np.array([4,5,6])
A2 = np.array([[1,2],[3,4]])
B2 = np.array([[5,6],[7,8]])
A3 = np.array([[1,2,3],[1,2,3]])
B3 = np.array([1,2,3])
## 克罗内克积  使用np.kron
print(np.kron(A1,B1))
print(np.kron(A2,B2))
print(np.kron(A3,B3))

带你一次搞懂点积(内积)、叉积(外积)相关推荐

  1. 带你一文搞懂VMware Workstation的三种网络模式

    前言: 其实VMware Workstation的三种网络模式我学的不止一遍,但每次学习自己理解的都是朦胧的概念,说自己学会了吧,一些实质性的概念转头就忘记,一点也想不起来.说自己不会吧,但是每次学习 ...

  2. 带你一文搞懂网络层的IP协议\数据链路层的以太网\ARP协议以及DNS和NAT协议

    TCP连接管理中的保活机制: TCP协议是面向连接通信,若通信双方长时间没有数据往来,就需要确定对方还是否在线,连接是否正常?        若通信双方长时间(7200秒)没有数据往来,在服务端会向客 ...

  3. 趣节点带您3分钟搞懂信息流广告

    在互联网时代,我们身边几乎到处充斥着信息流广告的痕迹,但由于大家对信息流广告并不是很了解,所以即便我们遇到了信息流广告也分辨不出来.还有另外一个原因就是:信息流广告看起来和我们平常看到的信息内容是没有 ...

  4. 两向量常用的“积”-----------内积,外积,点乘,叉乘,哈达玛积,张量积

    英文叫法总结(目前论文中常出现的几种向量积): 1,内积(inner product)/点积,点乘(dot product)/数量积(scalar product) 2,外积(Exterior Pro ...

  5. 内积、外积、元素积、克罗内克积的区分及用法【python】

    带你一次搞懂点积(内积).叉积(外积)_机器学习Zero的博客-CSDN博客_点积和叉积 向量的外积(outer product)与克罗内克积(Kronecker)_努力干活还不粘人的小妖精的博客-C ...

  6. 一文搞懂BPE分词算法

    大家好,我是Xueliang,又和大家见面了. 我最近在打机器翻译的一个比赛,主要使用基于BERT的模型.在这其中,一个小的知识点引起了我的好奇,就是在将英语训练语料输入到BERT模型之前,需要对其进 ...

  7. 一文带你搞懂什么是测试开发!

    需要说明的是,原文发表于作者的公众号中,文章篇幅虽长,但内容朴实.且能帮助读者进一步理解测试开发工作,请读者耐心品完~ 01 开始前说点什么 1. 自我反省 公众号开通了也有两年多了,除了刚开通的那段 ...

  8. 一文带你搞懂从动态代理实现到Spring AOP

    摘要:本文主要讲了Spring Aop动态代理实现的两种方式. 1. Spring AOP Spring是一个轻型容器,Spring整个系列的最最核心的概念当属IoC.AOP.可见AOP是Spring ...

  9. 怎么用Python写出随时间变化的字_面试必备 | 带你彻底搞懂 Python 生成器

    文章转载地址:面试必备 | 带你彻底搞懂 Python 生成器. 写在之前 Python 的高级语言特性一直是我们学习 Python 的一个难点,大部分人并没有做到熟练的掌握,甚至去学习它都感觉很困难 ...

最新文章

  1. for...in和 for...of
  2. python类_python类和对象
  3. requests从api中获取数据并存放到mysql中
  4. 【网址收藏】WIN10进入超级管理员账号(Administrator)
  5. 计算机硬盘read,为你解答电脑开机提示a disk read error occurred怎么办
  6. HP服务器ile进系统,HP GEN10服务器UEFI安装Windows Sverver 2012 R2教程
  7. 当使用easyui时,jquery的设置disabled属性方法失效
  8. 软件外部接口和内部接口_java中的内部类内部接口详解
  9. 12.11团队任务汇总
  10. addEventListener和attachEvent二者绑定的执行函数中的this不相同【转载】
  11. [comsol]求协调初始值失败,奇异矩阵。
  12. diabetes影响因子2017_2017年度影响因子看点和预测(MedSci出品)
  13. django book 制作
  14. MySQL中EXPLAIN解析
  15. 迅捷pdf转换器如何转换成word文档
  16. python爬虫一:爬虫简介
  17. 【Android安全】安卓app爬虫工具 | 混淆检测工具
  18. 什么叫ocpm、ocpc、ocpa?三种转化出价方式
  19. 软考之下午题做题技巧
  20. IBM ServerGuide 9.21

热门文章

  1. 7.29总结,对象流,缓冲流
  2. Spring 中事务传播行为
  3. 访问修饰符的作用范围
  4. TDMA,CDMA,FDMA三种多址技术比较
  5. 网络安全法-身份鉴别
  6. 在MSN中批量添加好友的方法
  7. Docker学习(三)-----Docker镜像和仓库了解以及加速
  8. Python里 int 和 bytes互转的方法
  9. 【电子书怎么制作】云展网教程 | 自定义画册硬皮封面和凹槽
  10. 毕业三年跳槽八次,换来惨痛的后果,资深架构师给出的一些建议!