繁体   English   中英

我如何找出A * B是Numpy中的Hadamard或Dot产品?

[英]How can I find out if A * B is a Hadamard or Dot Product in Numpy?

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

c = a * b

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

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

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

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

暂无
暂无

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

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