Scipy特殊包
特殊包中可用的功能是通用功能,它遵循廣播和自動數組循環。
下面來看看一些最常用的特殊函數功能 -
- 立方根函數
- 指數函數
- 相對誤差指數函數
- 對數和指數函數
- 蘭伯特函數
- 排列和組合函數
- 伽馬函數
下面來簡單地瞭解這些函數。
立方根函數
這個立方根函數的語法是 - scipy.special.cbrt(x)
。 這將獲取x
的基於元素的立方體根。
參考下面的一個例子 -
from scipy.special import cbrt
res = cbrt([10, 9, 0.1254, 234])
print (res)
執行上面示例代碼,得到以下結果 -
[ 2.15443469 2.08008382 0.50053277 6.16224015]
指數函數
指數函數的語法是 - scipy.special.exp10(x)
。 這將計算10 ** x
的值。
參考下面的一個例子 -
from scipy.special import exp10
res = exp10([2, 4])
print (res)
執行上面示例代碼,得到以下結果 -
[ 100. 10000.]
相對誤差指數函數
這個函數的語法是 - scipy.special.exprel(x)
。 它生成相對誤差指數,(exp(x) - 1/x
。
當x
接近零時,exp(x)
接近1
,所以exp(x)-1
的數值計算可能遭受災難性的精度損失。 然後exprel(x)
被實現以避免精度的損失,這在x
接近於零時發生。
參考下面的一個例子。
from scipy.special import exprel
res = exprel([-0.25, -0.1, 0, 0.1, 0.25])
print (res)
執行上面示例代碼,得到以下結果 -
[0.88479687 0.95162582 1. 1.05170918 1.13610167]
對數和指數函數
這個函數的語法是 - scipy.special.logsumexp(x)
。 它有助於計算輸入元素指數總和的對數。
參考下面的一個例子 -
from scipy.special import logsumexp
import numpy as np
a = np.arange(10)
res = logsumexp(a)
print (res)
執行上面示例代碼,得到以下結果 -
9.45862974443
蘭伯特函數
這個函數的語法是 - scipy.special.lambertw(x)
。 它也被稱爲蘭伯特W函數。 蘭伯特W函數W(z)
定義爲w * exp(w)
的反函數。 換句話說,對於任何複數z
,W(z)
的值都是z = W(z)* exp(W(z))
。
蘭伯特W函數是一個具有無限多分支的多值函數。 每個分支給出了方程z = w exp(w)
的單獨解。 這裏,分支由整數k索引。
參考下面的一個例子。 這裏,蘭伯特W函數是w exp(w)
的逆函數。
from scipy.special import lambertw
w = lambertw(1)
print (w)
print (w * np.exp(w))
上述程序將生成以下輸出 -
(0.56714329041+0j)
(1+0j)
排列和組合
下面將分開討論排列和組合,以便清楚地理解它們。
組合 - 組合函數的語法是 - scipy.special.comb(N,k)
。參考下面的一個例子 -
from scipy.special import comb
res = comb(10, 3, exact = False,repetition=True)
print (res)
執行上面示例代碼,得到以下結果 -
220.0
注 - 數組參數僅適用於
exact = False
大小寫。 如果k> N
,N <0
或k <0
,則返回0
。
排列 - 組合函數的語法是 - scipy.special.perm(N,k)
。 一次取k
個N
個東西的排列,即N
個k
個排列。這也被稱爲「部分排列」。
參考下面的一個例子。
from scipy.special import perm
res = perm(10, 3, exact = True)
print (res)
上述程序將生成以下輸出 -
720
伽馬函數
由於z * gamma(z)= gamma(z + 1)
和gamma(n + 1)= n!
,所以對於自然數'n'
,伽馬函數通常被稱爲廣義階乘。
組合函數的語法是 - scipy.special.gamma(x)
。 一次取k
個N
個東西的排列,即N
個k
個排列。這也被稱爲「部分排列」。
組合函數的語法是 - scipy.special.gamma(x)
。 一次取k
個N
個東西的排列,即N
個k
個排列。這也被稱爲「部分排列」。
from scipy.special import gamma
res = gamma([0, 0.5, 1, 5])
print (res)
執行上面示例代碼,得到以下結果 -
[inf 1.77245385 1. 24.]