numpy
ndarrayをサブクラス化する
サーチ…
構文
def __array_prepare__(self, out_arr: ndarray, context: Tuple[ufunc, Tuple, int] = None) -> ndarray: # called on the way into a ufunc
def __array_wrap__(self, out_arr: ndarray, context: Tuple[ufunc, Tuple, int] = None) -> ndarray: # called on the way out of a ufunc
__array_priority__: int # used to determine which argument to invoke the above methods on when a ufunc is called
def __array_finalize__(self, obj: ndarray): # called whenever a new instance of this class comes into existence, even if this happens by routes other than __new__
配列の余分なプロパティをトラッキングする
class MySubClass(np.ndarray):
def __new__(cls, input_array, info=None):
obj = np.asarray(input_array).view(cls)
obj.info = info
return obj
def __array_finalize__(self, obj):
# handles MySubClass(...)
if obj is None:
pass
# handles my_subclass[...] or my_subclass.view(MySubClass) or ufunc output
elif isinstance(obj, MySubClass):
self.info = obj.info
# handles my_arr.view(MySubClass)
else:
self.info = None
def __array_prepare__(self, out_arr, context=None):
# called before a ufunc runs
if context is not None:
func, args, which_return_val = context
return super().__array_prepare__(out_arr, context)
def __array_wrap__(self, out_arr, context=None):
# called after a ufunc runs
if context is not None:
func, args, which_return_val = context
return super().__array_wrap__(out_arr, context)
ためのcontext
タプル、 func
等ufunc目的であるnp.add
、 args
あるtuple
、及びwhich_return_val
ufuncの値が処理されている戻り整数指定して
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow