scipy.special.

factorial#

scipy.special.factorial(n, exact=False, extend='zero')[源代码]#

一个数字或数字数组的阶乘。

非负整数 n 的阶乘是小于或等于 n 的所有正整数的乘积

n! = n * (n - 1) * (n - 2) * ... * 1
参数:
nint 或 float 或 complex (或它们的类数组)

n! 的输入值。复数值需要 extend='complex'。默认情况下,n < 0 的返回值是 0。

exactbool,可选

如果 exact 设置为 True,则使用整数算术精确计算答案,否则使用伽玛函数近似计算(速度更快,但产生浮点数而不是整数)。默认为 False。

extendstring,可选

可以是 'zero''complex' 之一;这决定了如何处理 n<0 的值 - 默认情况下它们是 0,但是可以选择阶乘的复数扩展(见下文)。

返回:
nfint 或 float 或 complex 或 ndarray

n 的阶乘,为整数、浮点数或复数(取决于 exactextend)。数组输入将作为数组返回。

注释

对于 exact=True 的数组,阶乘仅计算一次,针对最大的输入,并且每个其他结果在此过程中计算。如果需要,输出数据类型将增加到 int64object

exact=False 时,阶乘使用伽玛函数近似计算(这也是复数扩展的定义)

\[n! = \Gamma(n+1)\]

示例

>>> import numpy as np
>>> from scipy.special import factorial
>>> arr = np.array([3, 4, 5])
>>> factorial(arr, exact=False)
array([   6.,   24.,  120.])
>>> factorial(arr, exact=True)
array([  6,  24, 120])
>>> factorial(5, exact=True)
120