Numpy 使用自定义ndarray子类截取数组创建例程

Numpy 使用自定义ndarray子类截取数组创建例程,numpy,numpy-ndarray,Numpy,Numpy Ndarray,我有一个自定义的numpy ndarray子类,我希望所有的数组创建函数,如np.arange,np.zeros等,都被我的自定义子类截取,以便向其中添加属性 我在fornp.arange中看到了like关键字: 引用对象以允许创建非NumPy数组的数组。如果作为like传入的数组like支持array\u函数协议,则结果将由它定义。在这种情况下,它确保创建与通过此参数传入的对象兼容的数组对象 问题是我没有引用对象(只有类),因为在调用np.arange函数时数组还没有创建。一开始我觉得这样可能

我有一个自定义的numpy ndarray子类,我希望所有的数组创建函数,如
np.arange
np.zeros
等,都被我的自定义子类截取,以便向其中添加属性

我在for
np.arange
中看到了
like
关键字:

引用对象以允许创建非NumPy数组的数组。如果作为like传入的数组like支持array\u函数协议,则结果将由它定义。在这种情况下,它确保创建与通过此参数传入的对象兼容的数组对象

问题是我没有引用对象(只有类),因为在调用
np.arange
函数时数组还没有创建。一开始我觉得这样可能行得通:

class Subclass(np.ndarray): 

    def __array_function__(self, func, *args):
        ... intercept func (np.arange) ...

np.arange(10, like=Subclass)

但这是行不通的。如何使用自定义类截取数组创建例程?

作为术语,
np.arange
np.zero
是函数,而不是方法。此
like
参数可能会根据您的需要添加一些自定义选项,但它是一个新功能,并且没有广泛应用。是的,读取该参数看起来像
np.arange(10,like=np.ndarray)
应该可以工作。但是它没有。
np.arange(3,like=np.ndarray([]))
runsYes,执行
np.arange(10,like=Subclass(0))
将拦截函数。但是我需要实例化这个类吗?如果我尝试
ndarray
is,它会给出一个错误,而如果我给出一个实际的数组,它会运行。我没有备用的类来测试这个。