Python/Numpy 中乘两个向量每个元素的操作叫什么/怎么表示?

5 投票
4 回答
1572 浏览
提问于 2025-04-16 16:01

比如,我有:

x = array([1, 2, 3])
y = array([4, 5, 6])

在Python中,标准的“数组相乘”是用 z = x * y = array([4, 10, 18]) 这样的方式来做的。而在Matlab中,要实现同样的效果,你需要用 *。如果我没记错的话。

这个操作叫什么?用什么符号来表示呢?

4 个回答

1

其实,有三种不同的方法可以把两个向量的所有元素相乘。

第一种是内积,也叫做点积,它的结果是一个标量,也就是一个普通的数字。

第二种是叉积,它的结果是一个向量,也就是一个有方向和大小的量。

第三种是张量积,它的结果是一个二阶张量,这个概念稍微复杂一些。

我相信你指的是第一种,因为大多数人都比较熟悉它,但我觉得把这三种方法都说出来会更完整。

1

看起来你想要的表达式是 S = sum_i( x_i * y_i)?这个叫做内积。从numpy的文档来看:

from numpy import *
x = array([1,2,3])
y = array([2,2,2])
inner(x,y)          <-- Should give 1*2 + 2*2 + 3*2 = 12

你提到的这个操作,以及在matlab中用 .* 得到的结果,叫做Schur/Hadamard积,通常用一个小圆圈作为符号。因为在numpy中,正常的 '*' 操作符得到的就是这个结果,所以我怀疑没有单独的Schur函数。

6

这是一个叫做哈达玛积的运算,用一个空心圆圈来表示:http://en.wikipedia.org/wiki/Matrix_multiplication#Hadamard_product

撰写回答