NumPy

Previous topic

numpy.mirr

Next topic

numpy.rate

This is documentation for an old release of NumPy (version 1.18). Read this page in the documentation of the latest stable release (version 2.2).

numpy.nper

numpy.nper(rate, pmt, pv, fv=0, when='end')[source]

Compute the number of periodic payments.

Deprecated since version 1.18: nper is deprecated; for details, see NEP 32 [1]. Use the corresponding function in the numpy-financial library, https://pypi.org/project/numpy-financial.

decimal.Decimal type is not supported.

Parameters
ratearray_like

Rate of interest (per period)

pmtarray_like

Payment

pvarray_like

Present value

fvarray_like, optional

Future value

when{{‘begin’, 1}, {‘end’, 0}}, {string, int}, optional

When payments are due (‘begin’ (1) or ‘end’ (0))

Notes

The number of periods nper is computed by solving the equation:

fv + pv*(1+rate)**nper + pmt*(1+rate*when)/rate*((1+rate)**nper-1) = 0

but if rate = 0 then:

fv + pv + pmt*nper = 0

References

1

NumPy Enhancement Proposal (NEP) 32, https://numpy.org/neps/nep-0032-remove-financial-functions.html

Examples

If you only had $150/month to pay towards the loan, how long would it take to pay-off a loan of $8,000 at 7% annual interest?

>>>
>>> print(np.round(np.nper(0.07/12, -150, 8000), 5))
64.07335

So, over 64 months would be required to pay off the loan.

The same analysis could be done with several different interest rates and/or payments and/or total amounts to produce an entire table.

>>>
>>> np.nper(*(np.ogrid[0.07/12: 0.08/12: 0.01/12,
...                    -150   : -99     : 50    ,
...                    8000   : 9001    : 1000]))
array([[[ 64.07334877,  74.06368256],
        [108.07548412, 127.99022654]],
       [[ 66.12443902,  76.87897353],
        [114.70165583, 137.90124779]]])