[Numpy-discussion] Why do mgrid and meshgrid not return broadcast arrays?

Warren Weckesser warren.weckesser at gmail.com
Wed Mar 8 22:05:21 EST 2017


On Wed, Mar 8, 2017 at 9:48 PM, Juan Nunez-Iglesias <jni.soma at gmail.com>
wrote:

> I was a bit surprised to discover that both meshgrid nor mgrid return
> fully instantiated arrays, when simple broadcasting (ie with stride=0 for
> other axes) is functionally identical and happens much, much faster.
>
>

Take a look at ogrid:
https://docs.scipy.org/doc/numpy/reference/generated/numpy.ogrid.html

Warren


I wrote my own function to do this:
>
>
> *def broadcast_mgrid(arrays):*
> *    shape = tuple(map(len, arrays))*
> *    ndim = len(shape)*
> *    result = []*
> *    for i, arr in enumerate(arrays, start=1):*
> *        reshaped = np.broadcast_to(arr[[...] + [np.newaxis] * (ndim -
> i)],*
> *                                   shape)*
> *        result.append(reshaped)*
> *    return result*
>
>
> For even a modest-sized 512 x 512 grid, this version is close to 100x
> faster:
>
>
> *In [154]: %timeit th.broadcast_mgrid((np.arange(512), np.arange(512)))*
> *10000 loops, best of 3: 25.9 µs per loop*
>
> *In [156]: %timeit np.meshgrid(np.arange(512), np.arange(512))*
> *100 loops, best of 3: 2.02 ms per loop*
>
> *In [157]: %timeit np.mgrid[:512, :512]*
> *100 loops, best of 3: 4.84 ms per loop*
>
>
> Is there a conscious design decision as to why this isn’t what
> meshgrid/mgrid do already? Or would a PR be welcome to do this?
>
> Thanks,
>
> Juan.
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> https://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20170308/fe254c99/attachment.html>


More information about the NumPy-Discussion mailing list