你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
点积:指实数域中的两个向量运算得到一个实数值标量。
对于向量a=(x1,y1)和向量b=(x2,y2),它们的点积表示为a⋅b=x1x2+y1y2。对于向量a=(x_1,y_1)和向量b=(x_2,y_2),\\它们的点积表示为a\cdot b=x_1x_2+y_1y_2。 对于向量a=(x1,y1)和向量b=(x2,y2),它们的点积表示为a⋅b=x1x2+y1y2。
两个矩阵运算需要满足矩阵乘法的规则,即前一个矩阵的列数等于后一个矩阵的行数。
矩阵A=[a11a12a21a22],矩阵B=[b11b12b21b22]AB=[a11∗b11+a12∗b21a11∗b12+a12∗b22a21∗b11+a22∗b21a21∗b12+a22∗b22]矩阵A=\begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix},矩阵B=\begin{bmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \end{bmatrix} \\ AB=\begin{bmatrix} a_{11}*b_{11}+a_{12}*b_{21} & a_{11}*b_{12}+a_{12}*b_{22} \\ a_{21}*b_{11}+a_{22}*b_{21} & a_{21}*b_{12}+a_{22}*b_{22} \end{bmatrix} 矩阵A=[a11a21a12a22],矩阵B=[b11b21b12b22]AB=[a11∗b11+a12∗b21a21∗b11+a22∗b21a11∗b12+a12∗b22a21∗b12+a22∗b22]
np.dot()与@的用法相同。
对于秩为1的数组,执行点积运算;
对于秩不为1的二维数组,执行矩阵乘法;
dot
>>> A = np.arange(1,5)
>>> A
array([1, 2, 3, 4])>>> B = np.arange(0,4)
>>> B
array([0, 1, 2, 3])>>> np.dot(A,B)
20
@
>>> A = np.arange(1,4)
>>> A
array([1, 2, 3])>>> B = np.arange(0,3)
>>> B
array([0, 1, 2])>>> A@B
8
dot
>>> A = np.arange(1,5).reshape(2,2)
>>> A
array([[1, 2],[3, 4]])>>> B = np.arange(0,4).reshape(2,2)
>>> B
array([[0, 1],[2, 3]])>>> np.dot(A,B)
array([[ 4, 7],[ 8, 15]])
@
>>> A = np.arange(1,7).reshape(2,-1)
>>> A
array([[1, 2, 3],[4, 5, 6]])>>> B = np.arange(1,7).reshape(-1,2)
>>> B
array([[1, 2],[3, 4],[5, 6]])>>> (np.mat(A))@(np.mat(B))
matrix([[22, 28],[49, 64]])
数组与矩阵对应位置相乘,输出与相乘的矩阵or数组大小相同
A = np.arange(1,5).reshape(2,2)
>>> A
array([[1, 2],[3, 4]])>>> B = np.arange(0,4).reshape(2,2)
>>> B
array([[0, 1],[2, 3]])>>> np.multiply(A,B)
array([[ 0, 2],[ 6, 12]])
数组会自适应按列相乘还是按行相乘。
>>> A = np.arange(1,3).reshape(2,1)
>>> A
array([[1],[2]])>>> B
array([[0, 1],[2, 3]])>>> np.multiply(A,np.mat(B))
matrix([[0, 1],[4, 6]])>>> A
array([[1, 2]])>>> B
array([[0, 1],[2, 3]])>>> np.multiply(A,np.mat(B))
matrix([[0, 2],[2, 6]])
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
matmul是matrix multiply的缩写,所以他是专门用于矩阵乘法的函数。
>>> A = np.arange(1,7).reshape(2,-1)
>>> A
array([[1, 2, 3],[4, 5, 6]])>>> B = np.arange(1,7).reshape(-1,2)
>>> B
array([[1, 2],[3, 4],[5, 6]])>>> np.matmul(np.mat(A), np.mat(B))
matrix([[22, 28],[49, 64]])
对数组执行对应位置相乘
对矩阵执行矩阵相乘
>>> A
array([1, 2, 3])>>> B
array([0, 1, 2])>>> A*B
array([0, 2, 6])
>>> A = np.arange(1,5).reshape(2,2)
>>> A
array([[1, 2],[3, 4]])>>> B = np.arange(0,4).reshape(2,2)
>>> B
array([[0, 1],[2, 3]])>>> (np.mat(A))*(np.mat(B))
matrix([[ 4, 7],[ 8, 15]])