Scipy 简明教程

SciPy - Special Package

特殊包中提供的函数是通用函数,遵循广播和自动数组循环。

让我们看看一些最常用的特殊函数 −

  1. Cubic Root Function

  2. Exponential Function

  3. Relative Error Exponential Function

  4. Log Sum Exponential Function

  5. Lambert Function

  6. Permutations and Combinations Function

  7. Gamma Function

我们现在简要了解一下这些函数中的每一个函数。

Cubic Root Function

此三次方根函数的语法为 – 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]

Exponential Function

指数函数的语法为 – scipy.special.exp10(x)。这将按元素计算 10**x。

让我们考虑以下示例。

from scipy.special import exp10
res = exp10([2, 9])
print res

上述程序将生成以下输出。

[1.00000000e+02  1.00000000e+09]

Relative Error Exponential Function

此函数的语法为 – 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]

Log Sum Exponential Function

此函数的语法为 – scipy.special.logsumexp(x)。它有助于计算输入元素指数之和的对数。

让我们考虑以下示例。

from scipy.special import logsumexp
import numpy as np
a = np.arange(10)
res = logsumexp(a)
print res

上述程序将生成以下输出。

9.45862974443

Lambert Function

此函数的语法为 – scipy.special.lambertw(x)。它也被称为 Lambert W 函数。Lambert W 函数 W(z) 定义为 w * exp(w) 的反函数。换句话说,对于任何复数 z,W(z) 的值满足 z = W(z) * exp(W(z))。

Lambert W 函数是一个多分支函数,具有无限多个分支。每个分支给出方程 z = w exp(w) 的一个解。此处,分支由整数 k 索引。

我们考虑以下示例。这里,Lambert W 函数是 w exp(w) 的反函数。

from scipy.special import lambertw
w = lambertw(1)
print w
print w * np.exp(w)

上述程序将生成以下输出。

(0.56714329041+0j)
(1+0j)

Permutations & Combinations

让我们先讨论排列和组合,以便能清楚地理解它们。

Combinations − 组合函数的语法是 - scipy.special.comb(N,k)。让我们考虑以下示例 -

from scipy.special import comb
res = comb(10, 3, exact = False,repetition=True)
print res

上述程序将生成以下输出。

220.0

Note − 仅在 exact = False 的情况下接受数组参数。如果 k > N、N < 0 或 k < 0,则返回 0。

Permutations − 排列函数的语法是 - scipy.special.perm(N,k)。一次对 N 个对象进行 k 个排列,即 N 的 k 个排列。这也称为“部分排列”。

让我们考虑以下示例。

from scipy.special import perm
res = perm(10, 3, exact = True)
print res

上述程序将生成以下输出。

720

Gamma Function

伽马函数通常被称为广义阶乘,因为 z*gamma(z) = gamma(z+1) 并且 gamma(n+1) = n!,其中“n”是自然数。

组合函数的语法是 - scipy.special.gamma(x)。一次对 N 个对象进行 k 个排列,即 N 的 k 个排列。这也称为“部分排列”。

组合函数的语法是 - scipy.special.gamma(x)。一次对 N 个对象进行 k 个排列,即 N 的 k 个排列。这也称为“部分排列”。

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

上述程序将生成以下输出。

[inf  1.77245385  1.  24.]