On Tue, Mar 29, 2016 at 1:46 PM, Benjamin Root <ben.v.r...@gmail.com> wrote: > Is there a quick-n-easy way to reflect a NxM array that represents a > quadrant into a 2Nx2M array? Essentially, I am trying to reduce the size of > an expensive calculation by taking advantage of the fact that the first part > of the calculation is just computing gaussian weights, which is radially > symmetric. > > It doesn't seem like np.tile() could support this (yet?). Maybe we could > allow negative repetitions to mean "reflected"? But I was hoping there was > some existing function or stride trick that could accomplish what I am > trying. > > x = np.linspace(-5, 5, 20) > y = np.linspace(-5, 5, 24) > z = np.hypot(x[None, :], y[:, None]) > zz = np.hypot(x[None, :int(len(x)//2)], y[:int(len(y)//2), None]) > zz = some_mirroring_trick(zz)
Are you looking for something like this: zz = np.hypot.outer(y[:len(y)//2], x[:len(x)//2]) zz = np.concatenate((zz[:, ::-1], zz), axis=1) zz = np.concatenate((zz, zz[::-1, :])) > assert np.all(z == zz) > > What can be my "some_mirroring_trick()"? I am hoping for something a little > better than using hstack()/vstack(). > > Thanks, > Ben Root > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > https://mail.scipy.org/mailman/listinfo/numpy-discussion > _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org https://mail.scipy.org/mailman/listinfo/numpy-discussion