我正在将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 (*) ]
中的等效形式是什么
答案 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]])