如何将公式转换为Python?

时间:2017-09-19 08:08:15

标签: python matrix formula linear-algebra matrix-multiplication

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

此公式: enter image description here

我把它翻译成这段代码:

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)

另一个公式:

enter image description here

我把它翻译成这段代码:

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次)并且通过它们循环变得非常慢。

1 个答案:

答案 0 :(得分:1)

你发现你是否使用了numpy很多东西"只是工作"。现在我无法对此进行测试,因为您没有提供测试数据,但第一个公式应该是

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数组就足够了)