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