[英]Python dendrogram there must be a k such that (k \choose 2)=n)
[英]python log n choose k
scipy.misc.comb,返回n選擇k,是使用gammaln函數實現的。 是否有一個保留在日志空間的函數? 我看到沒有scipy.misc.combln或任何類似的。 實現自己是微不足道的,但如果它已經在某個地方的包中會很方便。 我沒有在scipy.misc中看到它,轉換到普通空間然后返回日志感覺很浪費。
看一下源代碼 ,看起來你是對的,它實現起來是微不足道的,但它很可能沒有在scipy的其他地方實現。 從好的方面來說,有一些錯誤檢查正在進行,所以如果你在其他地方進行這些檢查,你可以消除一些(這類似於擺脫指數)。 如果你知道你總是給0 <= k <= N
,並且每個k
, N
作為一個數組,那么它將歸結為:
from scipy import special
def chooseln(N, k)
return special.gammaln(N+1) - special.gammaln(N-k+1) - special.gammaln(k+1)
可以使用gammaln
,但是當N >> k
時,減法會丟失精度。 這可以通過與beta函數的關系來避免:
from numpy import log
from scipy.special import betaln
def binomln(n, k):
# Assumes binom(n, k) >= 0
return -betaln(1 + n - k, 1 + k) - log(n + 1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.