factorial#
- scipy.special.factorial(n, exact=False, extend='zero')[source]#
The factorial of a number or array of numbers.
The factorial of non-negative integer n is the product of all positive integers less than or equal to n:
n! = n * (n - 1) * (n - 2) * ... * 1
- Parameters:
- nint or float or complex (or array_like thereof)
Input values for
n!
. Complex values requireextend='complex'
. By default, the return value forn < 0
is 0.- exactbool, optional
If
exact
is set to True, calculate the answer exactly using integer arithmetic, otherwise approximate using the gamma function (faster, but yields floats instead of integers). Default is False.- extendstring, optional
One of
'zero'
or'complex'
; this determines how valuesn<0
are handled - by default they are 0, but it is possible to opt into the complex extension of the factorial (see below).
- Returns:
- nfint or float or complex or ndarray
Factorial of
n
, as integer, float or complex (depending onexact
andextend
). Array inputs are returned as arrays.
Notes
For arrays with
exact=True
, the factorial is computed only once, for the largest input, with each other result computed in the process. The output dtype is increased toint64
orobject
if necessary.With
exact=False
the factorial is approximated using the gamma function (which is also the definition of the complex extension):\[n! = \Gamma(n+1)\]Examples
>>> 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