我的目的是防止数组中的负索引。
import numpy as np
class Myarray (np.ndarray):
def __getitem__(self,n):
if n<0:
raise IndexError("...")
return np.ndarray.__getitem__(self,n)
class Items(Myarray):
def __init__(self):
self.load_tab()
class Item_I(Items):
def load_tab(self):
self.tab=np.load("file.txt")
a=Item_I()
当我创建一个实例时出现错误:
in <module>
a=Item_I()
TypeError: Required argument 'shape' (pos 1) not found
答案 0 :(得分:1)
那是因为你从使用__new__
的类创建新实例和numpy.ndarray
requires several arguments in __new__
的子类,甚至在尝试调用__init__
之前:
__new__
方法的参数形状:整数元组
Shape of created array.
dtype:data-type,optional
Any object that can be interpreted as a numpy data type.
buffer:对象公开缓冲区接口,可选
Used to fill the array with data.
offset:int,optional
Offset of array data in buffer.
步幅:整数元组,可选
Strides of data in memory.
订单:{'C','F'},可选
Row-major (C-style) or column-major (Fortran-style) order.
然而,NumPy文档包含Subclassing ndarray
的整页。
您可能应该使用view
和Myarray
而不是Myarray
的子类:
tab=np.load("file.txt")
tab.view(Myarray)