作者ives0228 (ives)
看板Python
标题[问题] numpy.ndarray subclass回传值形态
时间Thu Apr 28 02:32:10 2016
我有一个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,只是用来应急
请问我该怎麽做才能用较通用的方式解决这个问题呢? 感谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 161.253.72.149
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1461781932.A.CE3.html
※ 编辑: ives0228 (161.253.72.149), 04/28/2016 02:34:13