如何将公式转换为 Python?

How to transform Formulas to Python?

我想在Python中使用Paper的两个公式。

这个公式:

我把它翻译成了这个代码:

P = A               #(size 24x24)
Q = B               #(size 24x24)
sum_of_all = 0
    for row in range(0,P.shape[0]):
        for column in range (0,P.shape[1]):
            zwischen =(w.iloc[row] * np.power((abs(P[row, column])-abs(Q[row,column])),2))[0]
            sum_of_all = sum_of_all +zwischen
res = np.sqrt(sum_of_all)

另一个公式:

我把它翻译成了这个代码:

P = A 
Q = B
sum_of_all = 0
for row in range(0,P.shape[0]):
    for column in range (0,P.shape[1]):
        zwischen = P[row, column]*Q[row,column]
        sum_of_all = sum_of_all +zwischen
sum_of_all = (w.iloc[row])[0]*abs(sum_of_all)        
res = np.sqrt(2-(2*sum_of_all))
  1. 我做对了吗?

  2. 我如何以 pythonic 方式更改(尤其是公式 1),因为这些公式经常使用(30000 次)并且通过它们循环变得非常慢。

如果你使用 numpy,你会发现很多东西 "just work"。现在我无法实际测试这个,因为你没有提供测试数据,但第一个公式应该类似于

P = np.random.rand(24, 24)
Q = np.random.rand(24, 24)
w = np.random.rand(24, 1)

np.sqrt(np.sum((w * np.power((np.abs(P) - np.abs(Q)), 2))))

如果您的权重位于数据帧或 numpy 数组中,这应该无关紧要 - 无论如何,数据帧都会支持到 numpy 数组,因此使用这样的数组操作应该可以正常工作。但是,它确实增加了开销,并且对于权重并没有真正的意义(我的经验是,如果您的数据具有有意义的列名,请使用数据框,否则一个普通的 numpy 数组就足够了)