【发布时间】:2017-02-23 09:41:12
【问题描述】:
我有两个矩阵
a = np.matrix([[1,2], [3,4]])
b = np.matrix([[5,6], [7,8]])
我想得到元素乘积,[[1*5,2*6], [3*7,4*8]],等于
[[5,12], [21,32]]
我试过了
print(np.dot(a,b))
和
print(a*b)
但两者都给出结果
[[19 22], [43 50]]
这是矩阵乘积,而不是元素乘积。如何使用内置函数获得逐元素产品(又名 Hadamard 产品)?
【问题讨论】:
-
你确定
a和b不是NumPy 的矩阵类型吗?使用此类,*返回内积,而不是元素方式。但对于通常的ndarray类,*表示元素级乘积。 -
是
a和bnumpy 数组吗?此外,在您上面的问题中,您使用x和y而不是a和b进行计算。这只是一个错字吗? -
a 和 b 是 numpy 矩阵类型元素
-
始终使用 numpy 数组,而不是 numpy 矩阵。请参阅what the numpy docs say 关于此。另请注意,从 python 3.5+ 开始,您可以将
@for matrix multiplication 与 numpy 数组一起使用,这意味着绝对没有充分的理由在数组上使用矩阵。 -
为了挑剔,
a和b是列表。他们将在np.dot工作;但不在a*b中。如果您使用np.array(a)或np.matrix(a),*有效,但结果不同。
标签: python numpy matrix matrix-multiplication elementwise-operations