Numpy文档中提到的“ sum product”是什么意思?

时间:2018-10-11 15:56:48

标签: numpy

在《 NumPy v1.15参考指南》中,documentation for numpy.dot使用“和积”的概念。

即,我们阅读以下内容:

  
      
  • 如果a是N-D数组,b是1-D数组,则它是a和b的最后一个轴上的总和。
  •   
  • 如果a是一个N-D数组而b是一个M-D数组(其中M> = 2),则它是a的最后一个轴与b的倒数第二个轴的和积:
      dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])
  •   

“和积”概念的定义是什么?
(例如,在Wikipedia上找不到这样的定义。)

1 个答案:

答案 0 :(得分:0)

https://en.wikipedia.org/wiki/Matrix_multiplication

That is, the entry c[i,j] of the product is obtained by multiplying 
term-by-term the entries of the ith row of A and the jth column of B, 
and summing these m products. In other words, c[i,j] is the dot product 
of the ith row of A and the jth column of B.

https://en.wikipedia.org/wiki/Dot_product

Algebraically, the dot product is the sum of the products of the 
corresponding entries of the two sequences of numbers.

在早期的数学课程中,您是不是通过一根手指横穿A的行并沿B的列向下滑动,乘以数字对并将它们相加来求矩阵乘积的?该动议是我对如何使用该产品的直觉的一部分。


对于第二个参数为一维的情况,np.dotnp.matmul产生相同的结果,但对动作的描述不同:

  • 如果a是一个N-D数组,而b是一个一维数组,则它是 ab的最后一个轴。

  • 如果第二个参数为1-D,则将其提升为矩阵 在其尺寸后附加1。矩阵相乘后 附加的1被删除。

    在[103]中:np.dot([[1,2 ,, [3,4]],[1,2]) Out [103]:array([5,11]) 在[104]中:np.matmul([[1,2 ,, [3,4]],[1,2]) Out [104]:array([5,11])

将维度附加到B上可以做到:

In [105]: np.matmul([[1,2],[3,4]], [[1],[2]])
Out[105]: 
array([[ 5],
       [11]])

最后一个是(2,2),其中(2,1)=>(2,1)

有时候用einsum来表达动作是更清楚的:

In [107]: np.einsum('ij,j->i', [[1,2],[3,4]], [1,2])
Out[107]: array([ 5, 11])

j,两个数组的最后一个轴都是“求和”的轴。