np.dot()和np.multiply之间的区别

时间:2018-11-13 17:51:42

标签: python python-3.x numpy

我正在将Matlab函数转换为python。我想用python重写这个简单的函数

function [ H ] = update_H( X , W , H )

     H = H.*((W'*X)./secu_plus(W'*W*H,eps));

end

function [ W ] = update_W( X , W , H )

     W = W.*((X*H')./secu_plus(W*(H*H'),eps));

end

注意:secu_plus是另一个功能,请忽略。

您可能会看到*.*有两种乘法,还有./

那么python [(.* ) (./ ) and (*) ]中的等效形式是什么

2 个答案:

答案 0 :(得分:0)

Matlap 中,。 operation 表示按元素进行的操作,例如,如果array1 = [1,2,3]和array3 [1,2,1],则.*将为[1,4,3] Python numpy 中的等效项是np.multiply

np.dot是两个向量之间的点积,数学上的点积是两个向量的乘积乘以两个余弦之间的夹角的值,在二维坐标中等于X1 * X2 + Y1 * Y2 作为一般形式,AB = sum ai * bi

所以只需使用np.multiply()等同于.*

答案 1 :(得分:-1)

在 np.multiply() 中,两个数组的列数应该相同:

l = np.array([[1,2],[4,5],[7,8]])
a = np.array([[2,3]]
np.multiply(l,a)
output:
array([[ 8],
       [23],
       [38]])

在 np.dot() 中第一个矩阵的列数=第二个矩阵的行数

l = np.array([[1,2],[4,5],[7,8]])
a = np.array([[2,3]]).reshape(2,1)
np.dot(l,a)
output
array([[ 2,  6],
       [ 8, 15],
       [14, 24]])