Josef, You're right, you can see it as a moving average. For 1D, correlate(a, [5,.5]) yields what I expect but does not take an axis keyword. For the 2D case, I'm rather looking for
>>> ndimage.filters.correlate(b,0.25*np.ones((2,2)))[1:,1:] So another one-liner... maybe not worth adding to the numpy namespace. David On Fri, May 15, 2009 at 4:47 PM, <josef.p...@gmail.com> wrote: > On Fri, May 15, 2009 at 4:09 PM, David Huard <david.hu...@gmail.com> > wrote: > > Pauli and David, > > > > Can this indexing syntax do things that are otherwise awkward with the > > current syntax ? Otherwise, I'm not warm to the idea of making indexing > more > > complex than it is. > > > > getv : this is useful but it feels a bit redundant with numpy.take. Is > there > > a reason why take could not support slices ? > > > > Drop_last: I don't think it is worth cluttering the namespace with a one > > liner. > > > > append_one: A generalized stack method with broadcasting capability would > be > > more useful in my opinion, eg. ``np.stack(x, 1., axis=1)`` > > > > zcen: This is indeed useful, particulary in its nd form, that is, when it > > can be applied to multiples axes to find the center of a 2D or 3D cell in > > one call. I'm appending the version I use below. > > > > Cheers, > > > > David > > > > > > # This code is released in the public domain. > > import numpy as np > > def __midpoints_1d(a): > > """Return `a` linearly interpolated at the mid-points.""" > > return (a[:-1] + a[1:])/2. > > > > def midpoints(a, axis=None): > > """Return `a` linearly interpolated at the mid-points. > > > > Parameters > > ---------- > > a : array-like > > Input array. > > axis : int or None > > Axis along which the interpolation takes place. None stands for all > > axes. > > > > Returns > > ------- > > out : ndarray > > Input array interpolated at the midpoints along the given axis. > > > > Examples > > -------- > > >>> a = [1,2,3,4] > > >>> midpoints(a) > > array([1.5, 2.5, 3.5]) > > """ > > x = np.asarray(a) > > if axis is not None: > > return np.apply_along_axis(__midpoints_1d, axis, x) > > else: > > for i in range(x.ndim): > > x = midpoints(x, i) > > return x > > > > zcen is just a moving average, isn't it? For time series (1d), > correlate works well, for 2d (nd?), there is > > >>> a= np.arange(5) > >>> b = 1.0*a[:,np.newaxis]*np.arange(4) > >>> ndimage.filters.correlate(b,0.5*np.ones((2,1)))[1:,1:] > >>> ndimage.filters.correlate(b,0.5*np.ones((2,1)))[1:,1:] > > Josef > _______________________________________________ > Numpy-discussion mailing list > Numpy-discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion >
_______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion