NumPy:当 __array_ufunc__=None 在类似数组的类中时,某些运算符不起作用



我遵循了本指南来实现可以通过二进制运算符(如+-*等(与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)'

欢迎使用堆栈溢出!

import numpy as np
class ArrayLike(object):
__array_ufunc__ = None
def __mul__(self, other):
return 'mul'
def __truediv__(self, other):
return 'div'
array = np.arange(3)
npnum = np.float32(2.0)
alike = ArrayLike()
alike / npnum # 'div'

请注意,我使用的是__truediv__而不是__div____div__不是Python 3的有效魔术方法运算符,仅适用于Python 2。

有关更多信息,请参阅Python 3 Operators

如果这回答了你的问题,一定要把它标记为答案。谢谢

相关内容

最新更新