从一个流行的例子开始
import numpy as np
class TestArray(np.ndarray):
def __new__(subtype, shape, dtype=float, buffer=None, offset=0,
strides=None, order=None):
obj = np.ndarray.__new__(subtype, shape, dtype, buffer, offset, strides,
order)
return obj
obj = TestArray(shape=(3,))
obj[:] = [1, 2, 3]
print type(np.nanmean(obj))
print type(np.nanmean(numpy.array(obj)))
给出输出
<class '__main__.TestArray'>
<type 'numpy.float64'>
我宁愿numpy.nanmean(obj)也返回一个numpy.float64。
现在显然我可以投射到numpy.array,但我不想这样做。
我需要在类定义中修改什么,以便numpy.nanmean()(可能还有其他)返回的类型总是与使用numpy.ndarray直接调用的类型相同?