猿问

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

我正在将我的 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 (*) ]


萧十郎
浏览 276回答 2
2回答

慕尼黑8549860

在Matlap 中,。operation表示元素明智的操作,例如如果 array1 = [ 1,2,3] 和 array3 [1,2,1],.*则将是 [1,4,3] Python numpy 中的 this 等价物 是np.multiplynp.dot 是两个向量之间的点积,点积在数学上是两个向量的乘积乘以中间夹角的余弦值,在二维坐标中相当于X1 * X2 + Y1 * Y2 作为一般形式AB = 总和 ai*bi所以只需使用np.multiply()相当于.*

千巷猫影

在 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)outputarray([[ 2,  6],       [ 8, 15],       [14, 24]])
随时随地看视频慕课网APP

相关分类

Python
我要回答