[英]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中对此进行了讨论。 简而言之,它取决于A
和B
的类型。 如果它们是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.