令人困惑的python运营商

时间:2013-04-12 20:06:26

标签: python

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

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都只是整数。

谢谢!

3 个答案:

答案 0 :(得分:7)

/是除法运算符。 \用于线路连续。它与:

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

只写两行而不是一行。

答案 1 :(得分: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继续解析下一行。

答案 2 :(得分:2)

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