python中math庫和python庫都具備求對數的函式。
import numpy as np
import math12
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中以任意數為底的對數需要用到換底公式:
例如:以3為底,5的對數
**寫出來為:
[python] 純文字檢視
複製**
?1np.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 求以任意數為底的對數
[python] 純文字檢視
複製**?1
2math.log(x, n)
其中n為底數
3. 區別
為什麼有了乙個math庫中求對數的方法,還要在numpy庫中內建一模一樣的函式?
原因:如果輸入為乙個列表:
[python] 純文字檢視
複製**?1
2math.log10([10, 100]) # 會報錯
typeerror: must be real number, not
list
[python] 純文字檢視
複製**?1
2345
678np.log10([10, 100])
[out]:
array([1., 2.])
np.log10([[10, 100], [1000, 10000]])
[out]:
array([[1., 2.],
[3., 4.]])
求逆序對數目
設計乙個平均時間為o n logn o nlogn o nlog n 的演算法,在n 1 n 1000 n 1 n 1000 n 1 n 1 000 個元素的陣列中尋找逆序對數目 這裡介紹分治的思想,用歸併對陣列進行排序,在排序的過程中,即可順便將逆序對數目求出來 首先,不斷地二分這個陣列,直到最小...
求逆序對數目
題目描述 給定乙個序列 a1,a2,a na 1,a 2,a n a1 a2 an 如果存在 a i aj a i a j ai aj 且 i i j 那麼我們稱之為逆序對的,求逆序對的數目。輸入第一行為 n nn,表示序列長度,接下來的 n nn 行,第 i 1 i 1i 1 行表示序列中的第 i...
T T問題求位數(對數求位數)
t t這個很像乙個流淚的表情是不是!其實,它是t的t次方啦 當t比較大的時候t t會非常大,現在只要你求這個數一共有多少位就可以了。包括多組資料,每組資料為乙個整數 0 剛開始看這道題本來想用python,畢竟python的資料型別轉換起來 比較方便,用快速冪求出該數,並轉換為字串型別,在輸出字串 ...