[Numpy-discussion] Vectorizing computation

Francesc Alted faltet at gmail.com
Fri Feb 13 07:03:50 EST 2015


2015-02-13 12:51 GMT+01:00 Julian Taylor <jtaylor.debian at googlemail.com>:

> On 02/13/2015 11:51 AM, Francesc Alted wrote:
> > Hi,
> >
> > I would like to vectorize the next computation:
> >
> > nx, ny, nz = 720, 180, 3
> > outheight = np.arange(nz) * 3
> > oro = np.arange(nx * ny).reshape((nx, ny))
> >
> > def compute1(outheight, oro):
> >     result = np.zeros((nx, ny, nz))
> >     for ix in range(nx):
> >         for iz in range(nz):
> >             result[ix, :, iz] = outheight[iz] + oro[ix, :]
> >     return result
> >
> > I think this should be possible by using an advanced use of broadcasting
> > in numpy.  Anyone willing to post a solution?
>
>
> result = outheight + oro.reshape(nx, ny, 1)
>
>
And 4x faster for my case.  Oh my, I am afraid that my mind will never
scratch all the amazing possibilities that broadcasting is offering :)

Thank you very much for such an elegant solution!

Francesc
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20150213/b33989a4/attachment.html>


More information about the NumPy-Discussion mailing list