爲什麼它不存在?python數學模塊中的log2
import math
[x for x in dir(math) if 'log' in x]
>>> ['log', 'log10', 'log1p']
我知道我可以做log(x,2),但是log2真的很常見,所以我有些莫名其妙。
哦,它看起來只是在C99中定義的,而不是C90,我想這回答了我的問題。仍然有點傻。
爲什麼它不存在?python數學模塊中的log2
import math
[x for x in dir(math) if 'log' in x]
>>> ['log', 'log10', 'log1p']
我知道我可以做log(x,2),但是log2真的很常見,所以我有些莫名其妙。
哦,它看起來只是在C99中定義的,而不是C90,我想這回答了我的問題。仍然有點傻。
我想你已經回答了你自己的問題。 :-)沒有log2(x)
,因爲你可以做log(x, 2)
。正如Python的禪(PEP 20)所說,「應該有一個 - 最好只有一個 - 明顯的方法來做到這一點。」
這就是說,在log2
Issue3366被認爲(向下滾動到最後3個消息),其增加了若干其他C99數學函數到math
模塊用於Python 2.7和3.2。
編輯:log2被重新考慮在Issue11888中,並在Python 3.3中添加。
我不知道,有你想要的,但:
- 但從數學角度可以爲辦〔實施例math.log(X)/math.log(2)。
- 如果輸入X具有整數類型,並且您在等待積分舍入結果 - 您可以通過右移來更快地完成。這適用於SHR命令,並且不需要taylor series + local插值,這是libc log()調用的底層。
這引發了一個問題,爲什麼'log10'存在? – 2010-06-07 21:31:04
log10是C89,因此它存在於所有常用平臺上,包括Windows。所以Python對它添加一個包裝是很簡單的。 – 2010-06-07 21:31:52
好吧,夠公平的。我猜像log10這樣的人足以包含它,但不是log2。它看起來實際上是numpy,所以解決了這個問題。 – 2010-06-07 22:59:46