【发布时间】:2017-02-18 12:29:45
【问题描述】:
两个向量的点积可以通过numpy.dot 计算。现在我想计算向量数组的点积:
>>> numpy.arange(15).reshape((5, 3))
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14]])
向量是行向量,输出应该是包含点积结果的一维数组:
array([ 5, 50, 149, 302, 509])
对于叉积 (numpy.cross),这可以通过指定 axis 关键字轻松实现。但是numpy.dot 没有这样的选项,传递两个二维数组将产生普通的矩阵乘积。我还查看了numpy.tensordot,但这似乎也不起作用(作为扩展矩阵产品)。
我知道我可以通过计算二维数组的每个元素的点积
>>> numpy.einsum('ij, ji -> i', array2d, array2d.T)
但是,此解决方案不适用于一维数组(即仅单个元素)。我想获得一个适用于一维数组(返回标量)和一维数组(又名二维数组)(返回一维数组)的解决方案。
【问题讨论】:
标签: python python-2.7 numpy