首页 > 解决方案 > 如何为给定的方程写出完美的循环?

问题描述

我想在 python 中为下面给出的等式编写一个 for 循环: 在此处输入图像描述

Z3 是大小为 M*d 的矩阵。

JSD的功能是:

def JSD(p, q, alpha):
  return np.sum(np.sqrt(p+alpha) * np.log(np.sqrt(p+alpha) / np.sqrt(q+alpha)))


similarity = 0
for i in range(Z3.shape[0]):
  for j in range(Z3.shape[0]): 
    if (Z3[j] != Z3[i]).all():
      m = 0.5*(Z3[i]+Z3[j])
      similarity += 0.5*JSD(Z3[i],m,2)+0.5*JSD(Z3[j],m,2)

print(similarity)

如何为上述方程编写完美的代码?

标签: python

解决方案


def JSD(p, q, alpha):
  return np.sum(np.sqrt(p+alpha) * np.log(np.sqrt(p+alpha) / np.sqrt(q+alpha)))


similarity = 0
for i in range(Z3.shape[0]):
  for j in range(Z3.shape[0]): 
    if (j != i):
      m = 0.5*(Z3[i]+Z3[j])
      similarity += 0.5*JSD(Z3[i],m,2)+0.5*JSD(Z3[j],m,2)

print(similarity)

推荐阅读