Scipy-special-package

提供:Dev Guides
移動先:案内検索

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)の逆関数として定義されます。 つまり、W(z)の値は、複素数zに対してz = W(z) *exp(W(z))のようになります。

Lambert 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)

順列と組み合わせ

それらを明確に理解するために、順列と組み合わせを個別に議論しましょう。

*Combinations* -組み合わせ機能の構文は– 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

ガンマ関数

自然数「n」に対して、z * gamma(z)= gamma(z + 1)およびgamma(n + 1)= 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.]