I am trying to make a subclass that never propagates so that when
interacted with another ndarray, or even itself so that the return type is
always ndarray. Is this possible?
I got pretty far with
def __array_wrap__(self, out_arr, context=None):
if out_arr.shape == ():
return out_arr.item() # if ufunc output is scalar, return it
out = super(ArrayLike, self).__array_wrap__(out_arr, context)
# Never return ArrayLike
if isinstance(out, ArrayLike):
out = out.view(np.ndarray)
Which works well for ufuncs. However, when I try other functions like
`dot` I get my subclass type returned.
If there a reasonable way to ensure that my subclass doesn't propagate? I
think I would need some way to override the behavior when .view(MySubClass)