On Tue, Jun 26, 2012 at 10:53 PM, John Salvatier <[email protected]> wrote: > I want to support multiple types in the index_increment function that I've > written here: > https://github.com/jsalvatier/numpy/blob/master/numpy/core/src/multiarray/mapping.c > > I need to check that the first argument's type can support addition, cast > the dataptr to the appropriate type and do the addition operation for that > type. It looks like some of the numpy code uses .c.src files to do > templating. Is that what I want to do here? Is the syntax described > somewhere?
The proper way would be use the ufunc machinery, which already knows how to perform addition on arbitrary numpy dtypes... unfortunately this may be more complicated than you are hoping :-/. Since there's nothing about this operation that is specific to the addition operation or to the double type, I guess the ideal API would actually be something like, an extra method added to binary ufuncs np.add.inplace_indexed(a, idx, b) which would be equivalent to a[idx] += b except that duplicate indices would be handled properly, and it would avoid making a copy in the case of fancy indexing. You could look at the implementation of ufunc.reduceat (numpy/core/src/umath/ufunc_object.c:PyUFunc_Reduceat) for an idea of how such fancy ufunc methods can be done. (An even more ideal API would find some way to make this work naturally with where=, but it's not obvious to me how that would work.) -n _______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
