我有以下功能:
def geo_dist_names(p, k):
sum = 0
for i in range(1, 4):
sum = p**i
return (p**(1 k))/sum
p是介于 0 和 1 之間的浮點數,k是介于 0 和 3 之間的整數。該函式基本上只是在與給定p和k相關聯的幾何分布中找到值,然后通過除以 4 個潛在值的總和對其進行歸一化對于k。
它有效,但我多次呼叫此函式,所以我想知道是否有更優化和/或更清潔的方式來執行此操作?
uj5u.com熱心網友回復:
您的代碼的矢量版本將是:
import numpy as np
def geo_dist_names(p, k):
return (p**(1 k))/(p**np.arange(1,4)).sum()
然而,我不確定它是否會比純 python 更快,因為這里的范圍很小,所以 numpy 的開銷可能不可忽略。
編輯。事實上,假設:
def geo_dist_names_python(p, k, N=4):
sum = 0
for i in range(1, N):
sum = p**i
return (p**(1 k))/sum
def geo_dist_names_numpy(p, k, N=4):
return (p**(1 k))/(p**np.arange(1,N)).sum()
只有當范圍增加時,numpy 才會更好:

uj5u.com熱心網友回復:
不知道優化了沒有。但作為一個單行,你可以這樣寫:
def geo_dist_names(p, k):
return (p**(1 k))/(p p**2 p**3)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/436241.html
上一篇:這是什么python語法?
