[Numpy-discussion] Overload binary operators with custom array type

Adam Jenkins adam at thejenkins.org
Fri Jan 12 15:37:57 EST 2007


Timothy Hochberg <tim.hochberg <at> ieee.org> writes:
> You want __array_priority__; add an attribute __array_priority__ to your
array-like object and set it's value to, say, 10 and ndarrays will defer to your
object.

Thank you very much.  I had seen the __array_priority__ property mentioned in
the Numpybook, but it's only documented there as being used to decide which
operand's type the result of an operation should be converted to, so I didn't
realize it would also be used to decide which operand to defer the operation to.

I just tried it, and it does solve the problem for the mathematical operators
like + and -, but doesn't seem to work for the comparison operators.  That is,
if I write

lhs < rhs

where lhs is a numpy.ndarray and rhs is a myarray, numpy still treats rhs as a
scalar and tries to compare each element of lhs to rhs, even though I set
myarray.__array_priority__.  Is this intentional that the comparison operators
ignore __array_priority__, or just a bug in ndarray?  Thanks again.

Adam




More information about the NumPy-Discussion mailing list