code: def npv(rate, values):
      """
      Returns the NPV (Net Present Value) of a cash flow series.
  
      Parameters
      ----------
      rate : scalar
          The discount rate.
      values : array_like, shape(M, )
          The values of the time series of cash flows.  The (fixed) time
          interval between cash flow "events" must be the same as that for
          which `rate` is given (i.e., if `rate` is per year, then precisely
          a year is understood to elapse between each cash flow event).  By
          convention, investments or "deposits" are negative, income or
          "withdrawals" are positive; `values` must begin with the initial
          investment, thus `values[0]` will typically be negative.
  
      Returns
      -------
      out : float
          The NPV of the input cash flow series `values` at the discount
          `rate`.
  
      Notes
      -----
      Returns the result of: [G]_
  
      .. math :: \\sum_{t=0}^{M-1}{\\frac{values_t}{(1+rate)^{t}}}
  
      References
      ----------
      .. [G] L. J. Gitman, "Principles of Managerial Finance, Brief," 3rd ed.,
         Addison-Wesley, 2003, pg. 346.
  
      Examples
      --------
      >>> np.npv(0.281,[-100, 39, 59, 55, 20])
      -0.0084785916384548798
  
      (Compare with the Example given for numpy.lib.financial.irr)
  
      """
      values = np.asarray(values)
      return (values / (1 + rate) ** np.arange(0, len(values))).sum(
          axis=0
      )
  
imports: from __future__ import division, absolute_import, print_function
  from decimal import Decimal
  import functools
  import numpy
  from numpy.core import overrides
label_desc: Use image node_id 21 for calling a global function with example usage: npv(rate, values) and returns: unknown