numpy ndarray subclass: ufunc don't return scalar type
For numpy.ndarray subclass, ufunc outputs have the same type. This is good in general but I would like for ufunc with scalar output to return scalar type (such as numpy.float64 ). Example: import numpy as np class MyArray(np.ndarray): def __new__(cls, array): obj = np.asarray(array).view(cls) return obj a = MyArray(np.arange(5)) a*2 # MyArray([0, 2, 4, 6, 8]) => same class as original (i.e. MyArray), ok a.sum() # MyArray(10) => same as original, but here I'd expect np.int64 type(2*a) is type(a.sum()) # True b = a.view(np.ndarray) type(2*b) is type(b.sum()) # False For standard numpy array,