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, 9])
print res
上述程序将产生以下输出。
[1.00000000e+02 1.00000000e+09]
相对误差指数函数
这个函数的语法是 – 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)。它也被称为Lambert 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
注意 - 阵列参数只接受精确=假的情况。如果k>N,N<0,或者k<0,那么将返回一个0。
排列组合 - 组合函数的语法是 – scipy.special.perm(N,k)。N事物的排列组合一次取k,即N的k排列组合,这也被称为 “部分排列组合”。
让我们考虑下面的例子。
from scipy.special import perm
res = perm(10, 3, exact = True)
print res
上述程序将产生以下输出。
720
伽马函数
伽马函数通常被称为广义阶乘,因为z*伽马(z)=伽马(z+1),伽马(n+1)=n!,对于一个自然数’n’而言。
组合函数的语法是 – scipy.special.gamma(x)。N的排列组合一次取k,即N的k排列组合,这也被称为 “部分排列组合”。
组合函数的语法是 – scipy.special.gamma(x)。每次取N个事物的排列组合,即N的k个排列组合,这也被称为 “部分排列组合”。
from scipy.special import gamma
res = gamma([0, 0.5, 1, 5])
print res
上述程序将产生以下输出。
[inf 1.77245385 1. 24.]