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)的反函式。 換句話說,對於任何複數zW(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> NN <0k <0,則返回0

排列 - 組合函式的語法是 - scipy.special.perm(N,k)。 一次取kN個東西的排列,即Nk個排列。這也被稱為「部分排列」。

參考下面的一個例子。

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)。 一次取kN個東西的排列,即Nk個排列。這也被稱為「部分排列」。

組合函式的語法是 - scipy.special.gamma(x)。 一次取kN個東西的排列,即Nk個排列。這也被稱為「部分排列」。

from scipy.special import gamma
res = gamma([0, 0.5, 1, 5])
print (res)

執行上面範例程式碼,得到以下結果 -

[inf  1.77245385  1.  24.]