[Numpy-discussion] Reflect array?

Joseph Fox-Rabinovitz jfoxrabinovitz at gmail.com
Tue Mar 29 13:58:44 EDT 2016


On Tue, Mar 29, 2016 at 1:46 PM, Benjamin Root <ben.v.root at 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 at scipy.org
> https://mail.scipy.org/mailman/listinfo/numpy-discussion
>



More information about the NumPy-Discussion mailing list