gpt4 book ai didi

python - 如何确定 A * B 是 Numpy 中的 Hadamard 还是点积?

转载 作者:太空宇宙 更新时间:2023-11-04 07:08:01 30 4
gpt4 key购买 nike

如果我在导入了 numpy 的 python 代码中看到以下行:

c = a * b

确定此操作是作为 Hadamard(逐元素)还是点积(逐点)操作执行的最简单和最实用的方法是什么?

对于 Hadamard 产品,A 和 B 的列和行大小必须相同是否正确。对于点积,只有 A 的列大小必须与 B 的行大小相同,对吗?所以我可以查找两者的形状并找出使用了哪个操作?

最佳答案

这在 PEP 465 中讨论.简而言之,它取决于AB 的类型。如果它们是 numpy.ndarray,则星号表示 Hadamard 乘积和矩阵乘法是使用 .dot() 方法完成的。如果它们是 numpy.matrix,则星号表示矩阵乘法。如果它们是其他类型(例如来自 NumPy 以外的库),则您必须查阅该类型的文档。如果它们是混合类型,则 matrix 优先(根据评论中的@ajcr)。

在 Python 3.5 中,这有望变得更容易,因为 @ 符号作为专用矩阵乘法运算符被引入(有关详细信息,请参阅上面的 PEP)。这不会向后移植到 2.7.x,因此这是升级的另一个原因。

关于python - 如何确定 A * B 是 Numpy 中的 Hadamard 还是点积?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30437418/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com