I was reading this <http://notes-on-cython.readthedocs.io/en/latest/std_dev.html> and got thinking about if a ufunc could compute the sum of squared differences in a single pass without a temporary array. The python code below demonstrates a possible approach.
import numpy as np x = np.arange(10) c = 1.0 def add_square_diff(x1, x2): return x1 + (x2-c)**2 ufunc = np.frompyfunc(add_square_diff, 2, 1) print(ufunc.reduce(x) - x[0] + (x[0]-c)**2) print(np.sum(np.square(x-c))) I have (at least) 4 questions: 1. Is it possible to pass run time constants to a ufunc written in C for use in its inner loop, and if so how? 2. Is it possible to pass an initial value to reduce to avoid the clean up required for the first element? 3. Does that ufunc work, or are there special cases which cause it to fall apart? 4. Would a very specialized ufunc such as this be considered for incorporating in numpy since it would help reduce time and memory of functions already in numpy? Thank you, Matt
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org https://mail.scipy.org/mailman/listinfo/numpy-discussion