[问题] numpy.ndarray subclass回传值形态

楼主: ives0228 (ives)   2016-04-28 02:32:10
我有一个numpy.ndarray的subclass
基本上都没什么问题,
只有当我使用numpy.ndarray的成员函数时
原本应该回传float或int的函数,现在回传的值都是我的subclass的instance
例如:
若是 a = numpy.array([1, 2, 3]); b = a.sum()
则 b = 6,且 type(b) = numpy.int64
但若 a = myClass.ArraySubclass([1, 2, 3]); b = a.sum()
则 b = ArraySubclass(6),且 type(b) = myClass.ArraySubclass
其中myClass是我自己写的module,而ArraySubclass则是ndarray的subclass
我尝试自己定义__array_wrap__及__array_prepare__
但是顶多把回传值的type变成numpy.ndarray,
而无法像原本a是numpy.ndarray时,能够自动回传int或float
目前的解决方案是针对常用的ndarray成员函数去重新定义并指定type
但我觉得这方法颇蠢,也不general,只是用来应急
请问我该怎么做才能用较通用的方式解决这个问题呢? 感谢!

Links booklink

Contact Us: admin [ a t ] ucptt.com