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