繁体   English   中英

numpy.dot如何用二维数组计算一维数组

[英]numpy.dot how to calculate 1-D array with 2-D array

numpy.dot docstring说:

对于2-D阵列,它相当于矩阵乘法,对于1-D阵列相当于矢量的内积(没有复共轭)。 对于N维,它是a的最后一个轴和b的倒数第二个轴的和积

但它没有说明numpy.dot如何计算具有二维数组的一维数组。那么Numpy如何处理具有二维数组(矩阵)的一维数组(向量)?

我做了一些测试:

In [27]: a
Out[27]: 
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

In [28]: b
Out[28]: array([0, 1, 2])

In [29]: np.dot(a,b)
Out[29]: array([ 5, 14, 23])

In [30]: np.dot(a, b.reshape(-1,1))
Out[30]: 
array([[ 5],
       [14],
       [23]])

In [31]: np.dot(a, b.reshape(-1,1)).ravel() # same as np.dot(a,b)
Out[31]: array([ 5, 14, 23])

In [32]: np.dot(b,a)
Out[32]: array([15, 18, 21])

In [33]: np.dot(b.reshape(1,-1), a)
Out[33]: array([[15, 18, 21]])

In [34]: np.dot(b.reshape(1,-1), a).ravel() # same as np.dot(b,a)
Out[34]: array([15, 18, 21])

上面的测试表明numpy.dot可以处理带有二维数组的一维数组。 这样对吗?

只有一个案例未在文档中明确描述,但有点暗示,即如何应用于2D和1D输入规则:

它是a的最后一个轴和b的倒数第二个的和积

在你的情况,当你做np.dot(a, b)有没有“第二到最后的”轴b 那么numpy是什么,是为了最后解决。 因此,它可以显示ab的每一行的总和乘积。

您的所有其他示例都符合上述规则。

1-d阵列和2-d阵列被处理为矩阵向量(或向量矩阵)乘积。 实际上,实现使用BLAS *gemv函数来处理浮点输入的这种情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM