[問題] 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