1. 程式人生 > 程式設計 >Python中求對數方法總結

Python中求對數方法總結

Python中Math庫和Python庫都具備求對數的函式。

import numpy as np
import math

1. Numpy庫

1.1 求以e、2、10為底的對數

函式 功能
np.log(x) 以e為底的對數(自然對數)
np.log10(x) 以10為底的對數
np.log2(x) 以2為底的對數
np.log1p(x) 等價於:np.log(x + 1)

備註:np.expm1(x) 等價於 np.exp(x) - 1,也是np.log1p(x)的逆運算。

1.2 求以任意數為底的對數

在Numpy中以任意數為底的對數需要用到換底公式:

Python中求對數方法總結

例如:以3為底,5的對數

Python中求對數方法總結

程式碼寫出來為:

np.log(5)/np.log(3)

2. Math庫

2.1 求以e、2、10為底的對數

與Numpy中的用法完全一樣

函式 功能
math.log(x) 以e為底的對數(自然對數)
math.log10(x) 以10為底的對數
math.log2(x) 以2為底的對數
math.log1p(x) 等價於:math.log(x + 1),用於資料平滑

備註:math.expm1(x) 等價於 math.exp(x) - 1,也是math.log1p(x)的逆運算。

2.2 求以任意數為底的對數

math.log(x,n)

其中n為底數

3. 區別

為什麼有了一個Math庫中求對數的方法,還要在Numpy庫中內建一模一樣的函式?

原因:

在math庫中,函式的輸入x只能為單獨一個數。

math.log10(100)
[out]: 2.0

如果輸入為一個列表:

math.log10([10,100])   # 會報錯
TypeError: must be real number,not list

在Numpy庫中,函式的輸入x不僅可以為單獨一個數,還可以是一個列表,一個Numpy陣列。

np.log10([10,100])
[out]:
array([1.,2.])

np.log10([[10,100],[1000,10000]])
[out]:
array([[1.,2.],[3.,4.]])

其結果為Numpy陣列。也就是說Numpy中的函式不需要迴圈就可以實現每個元素的批量處理。

到此這篇關於Python中求對數方法總結的文章就介紹到這了,更多相關Python 求對數 內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!