最近用 Python 求阶乘,发现3点:
- Python 的阶乘函数在内置的数学库中,为 math.factorial()。只对标量 scalar 进行计算,即只能对一个数进行计算。
- Numpy 没有自身的阶乘函数,它是直接调用 Python 的阶乘函数。即 numpy.math.factorial() 等于 Python 的 math.factorial()。
- 如果要对数组计算阶乘,要用 Scipy 的 special.factorial() 函数,并尽量使用 exact=True 设置,以进行精确计算。
使用 Python 的数学库计算阶乘,如下图。
要对数组计算阶乘时,使用 Scipy,尽量使用 exact=True 设置,以进行精确计算。如下图。
如果不设置 exact=True,Scipy 将使用gamma函数求阶乘的近似值。当求阶乘的数≤23时,两者没有差异。但是当求阶乘的数 ≥24时,会产生差异。如下图。所以推荐使用 exact=True 设置。
FYI:
Scipy 中对用gamma函数近似求阶乘的解释如下图。
Scipy 中对gamma函数的解释如下图。