Я следовал этому руководству по реализации объектов, которые могут взаимодействовать с np.ndarray
через бинарные операторы, такие как +
, -
, *
и т. Д. *
Как рекомендовано для моего случая, я установил __array_ufunc__ = None
и реализовал бинарные операции, такие как __mul__
и __div__
.Однако в этих примерах __mul__
работает, а __div__
- нет.
Вот MWE:
import numpy as np
class ArrayLike(object):
__array_ufunc__ = None
def __mul__(self, other):
return 'mul'
def __div__(self, other):
return 'div'
array = np.arange(3)
npnum = np.float32(2.0)
alike = ArrayLike()
alike * array # 'mul'
alike / array # '*** TypeError: operand 'ArrayLike' does not support ufuncs (__array_ufunc__=None)'
alike * npnum # 'mul'
alike / npnum # '*** TypeError: operand 'ArrayLike' does not support ufuncs (__array_ufunc__=None)'