2013-04-12 117 views
0

我已經跑過這段代碼,我似乎無法理解它。混淆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都只是整數。

謝謝!

+2

這是一個續行(/是劃分,\是爲了延續) – KevinDTimm

+2

值得注意的是,PEP-8強烈建議不要這樣做續行 - 它隱含在括號內,所以改變這些行的方式拆分會使它更具可讀性。 –

回答

7

/是分部操作員。 \用於線路連接。這是一樣的:

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

只是寫在兩行而不是一個。

+0

謝謝,幾分鐘後我會接受...我會搜索這個,但搜索運營商可能很困難。 – Mark

2

/是除法運算,並\是繼續目前的線下。他們在一起時看起來很奇怪。

3

換行符之前的反斜槓\要在下一行繼續,就好像換行符不存在。

使用多線A更可讀的方式是使用支架,這樣的:

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的繼續解析在下一行。