code: def quantile(x, q, weights=None):
      
      if weights is None:
          return np.percentile(x, [100. * qi for qi in q])
      else:
          idx = np.argsort(x)
          xsorted = x[idx]
          cdf = np.add.accumulate(weights[idx])
          cdf /= cdf[-1]
          return np.interp(q, cdf, xsorted).tolist()
docs: Like numpy.percentile, but:
  
      * Values of q are quantiles [0., 1.] rather than percentiles [0., 100.]
      * scalar q not supported (q must be iterable)
      * optional weights on x