我有两个矩阵
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
类,*
表示逐元素相乘。 - bnaeckera
和b
是numpy数组吗?此外,在您上面的问题中,计算时使用了x
和y
而不是a
和b
,这只是一个打字错误吗? - jtitusj@
矩阵乘法,这意味着没有任何好理由使用矩阵而不是数组。 - Praveena
和b
是列表。它们可以在np.dot
中使用,但不能在a*b
中使用。如果您使用np.array(a)
或np.matrix(a)
,则*
可以使用,但结果不同。 - hpauljnp.array(a)
和np.array(b)
,那么简单的a*b
就可以工作了。请注意,如果数字很大,您应该使用np.array(a, dtype=np.int64)
来获得正确的输出。 - Ehsan Tabatabaei