On Tue, Sep 13, 2016 at 11:47 AM, Stephan Hoyer <sho...@gmail.com> wrote:

> NumPy has the handy np.vectorize for turning Python code that operates on
> scalars into a function that vectorizes works like a ufunc, but no helper
> function for creating generalized ufuncs (http://docs.scipy.org/doc/
> numpy/reference/c-api.generalized-ufuncs.html).
>
> np.apply_along_axis accomplishes some of this, but it only allows a single
> core dimension on a single argument.
>
> So I propose adding a new object, np.guvectorize(pyfunc, signature,
> otypes, ...), where pyfunc is defined over the core dimensions only of any
> inputs and signature is any valid gufunc signature (a string). Calling this
> object would apply the gufunc. This is inspired by the similar
> numba.guvectorize, which is currently the easiest way to write a gufunc in
> Python.
>
> In addition to be handy like vectorize, such functionality would be
> especially useful for with working libraries that build upon NumPy to
> extend the capabilities of generalized ufuncs (e.g., xarray after
> https://github.com/pydata/xarray/pull/964).
>
>
First, this seems really cool. I hope it goes somewhere.

I'm curious whether you have a plan to deal with the python functional call
overhead. Numba gets around this by JIT-compiling python functions - is
there something analogous you can do in NumPy or will this always be
limited by the overhead of repeatedly calling a Python implementation of
the "core" operation?

-Nathan


> Cheers,
> Stephan
>
> _______________________________________________
> 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

Reply via email to