对于numpy.ndarray
子类,ufunc 输出具有相同的类型。这通常很好,但我希望具有标量输出的 ufunc 返回标量类型(例如numpy.float64
)。
例子:
import numpy as np
class MyArray(np.ndarray):
def __new__(cls, array):
obj = np.asarray(array).view(cls)
return obj
a = MyArray(np.arange(5))
a*2
# MyArray([0, 2, 4, 6, 8]) => same class as original (i.e. MyArray), ok
a.sum()
# MyArray(10) => same as original, but here I'd expect np.int64
type(2*a) is type(a.sum())
# True
b = a.view(np.ndarray)
type(2*b) is type(b.sum())
# False
对于标准 numpy 数组,标量输出具有标量类型。那么如何对我的子类有相同的行为呢?
我在 OSX 10.6 上使用 Python 2.7.3 和 numpy 1.6.2