def _findIndices(ArrSize, FilterSize): N = FilterSize.shape[0] n = int(FilterSize.prod()) CumSizeArr = numpy.ones([N], dtype=numpy.int32) CumSizeArr[1:N] = ArrSize[0:N - 1].cumprod() CumSize = numpy.ones([N], dtype=numpy.int32) CumSize[1:N] = FilterSize[0:N - 1].cumprod() vals = numpy.empty((n, N), dtype=numpy.int32) for i in range(N): vals[:, i] = numpy.linspace(0, n - 1, n) vals = vals // CumSize vals = vals % FilterSize CurrPos = summations.sum(vals * CumSizeArr, axis=1) return CurrPos.astype(numpy.int32)
def linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=float, bohrium=True): """ Return evenly spaced numbers over a specified interval. Returns `num` evenly spaced samples, calculated over the interval [`start`, `stop` ]. The endpoint of the interval can optionally be excluded. Parameters ---------- start : scalar The starting value of the sequence. stop : scalar The end value of the sequence, unless `endpoint` is set to False. In that case, the sequence consists of all but the last of ``num + 1`` evenly spaced samples, so that `stop` is excluded. Note that the step size changes when `endpoint` is False. num : int, optional Number of samples to generate. Default is 50. endpoint : bool, optional If True, `stop` is the last sample. Otherwise, it is not included. Default is True. retstep : bool, optional If True, return (`samples`, `step`), where `step` is the spacing between samples. Returns ------- samples : ndarray There are `num` equally spaced samples in the closed interval ``[start, stop]`` or the half-open interval ``[start, stop)`` (depending on whether `endpoint` is True or False). step : float (only if `retstep` is True) Size of spacing between samples. See Also -------- arange : Similiar to `linspace`, but uses a step size (instead of the number of samples). logspace : Samples uniformly distributed in log space. Examples -------- >>> np.linspace(2.0, 3.0, num=5) array([ 2. , 2.25, 2.5 , 2.75, 3. ]) >>> np.linspace(2.0, 3.0, num=5, endpoint=False) array([ 2. , 2.2, 2.4, 2.6, 2.8]) >>> np.linspace(2.0, 3.0, num=5, retstep=True) (array([ 2. , 2.25, 2.5 , 2.75, 3. ]), 0.25) Graphical illustration: >>> import matplotlib.pyplot as plt >>> N = 8 >>> y = np.zeros(N) >>> x1 = np.linspace(0, 10, N, endpoint=True) >>> x2 = np.linspace(0, 10, N, endpoint=False) >>> plt.plot(x1, y, 'o') [<matplotlib.lines.Line2D object at 0x...>] >>> plt.plot(x2, y + 0.5, 'o') [<matplotlib.lines.Line2D object at 0x...>] >>> plt.ylim([-0.5, 1]) (-0.5, 1) >>> plt.show() """ if not bohrium: # TODO: add copy=False to .astype() return numpy.linspace(start, stop, num=num, endpoint=endpoint, retstep=retstep).astype(dtype) num = int(num) if num <= 0: return array([], dtype=dtype) if endpoint: if num == 1: return array([numpy.dtype(dtype).type(start)]) step = (stop - start) / float((num - 1)) else: step = (stop - start) / float(num) y = arange(num, dtype=dtype) if step != 1: y *= step if start != 0: y += start if retstep: return y, step else: return y