This will let us support other array types more easily For e.g. cupy does not support `ufunc.reduceat` https://docs.cupy.dev/en/stable/reference/ufunc.html