0

我遇到了这段代码,我似乎无法理解它。

def _conditional_distribution(self, m, w):
    """
    Conditional distribution (vector of size n_topics).
    """
    vocab_size = self.nzw.shape[1]
    left = (self.nzw[:,w] + self.beta) / \
           (self.nz + self.beta * vocab_size)
    right = (self.nmz[m,:] + self.alpha) / \
            (self.nm[m] + self.alpha * self.n_topics)
    p_z = left * right
    # normalize to obtain probabilities
    p_z /= np.sum(p_z)
    return p_z

这是什么意思?谁能告诉我这段代码转换成什么方程?

作为参考,我相信 m 和 w 都只是整数。

谢谢!

4

3 回答 3

7

/是除法运算符。\用于行延续。它与以下内容相同:

left = (self.nzw[:,w] + self.beta) / (self.nz + self.beta * vocab_size)

只是写在两行而不是一行。

于 2013-04-12T20:07:58.687 回答
3

换行符之前的反斜杠\是在下一行继续,就好像换行符不存在一样。

使用多行的一种更易读的方法是使用括号,如下所示:

left = ((self.nzw[:,w] + self.beta) /
           (self.nz + self.beta * vocab_size))

或像这样:

right = ((self.nmz[m,:] + self.alpha)
         / (self.nm[m] + self.alpha * self.n_topics))

如果方括号没有对应的右方括号,Python 将继续解析下一行。

于 2013-04-12T20:14:46.297 回答
2

/是除法运算符,\是将当前行继续到下一行。他们在一起的时候看起来很奇怪。

于 2013-04-12T20:08:03.407 回答