【发布时间】:2016-09-13 13:00:05
【问题描述】:
一些 numpy 函数(逻辑上)返回标量:
>>> my_arr = np.ndarray(shape=(1,))
>>> type(np.max(my_arr))
<type 'numpy.float64'>
但仅在使用 ndarray 而不是子类调用时:
>>> class CustomArray(np.ndarray):
... pass
>>> my_arr = CustomArray(shape=(1,))
>>> type(np.max(my_arr))
<class '__main__.CustomArray'>
这是为什么?我希望两者都返回一个标量(<type 'numpy.float64'> 类型,或者前者返回一个np.ndarray 实例,后者返回一个CustomArray 实例。但是相反,我得到了这两种行为的组合。我可以通过改变我自己的班级来改变这种行为?
我在讨论子类化 ndarray (http://docs.scipy.org/doc/numpy-1.9.2/user/basics.subclassing.html) 的文档页面上没有看到任何可以解释这一点的内容。
(运行 Python 2.7.10,numpy 1.9.2,以防万一。)
【问题讨论】: