TypeError:找不到必需参数__getitem__ numpy

时间:2017-09-30 14:19:51

标签: python arrays python-3.x class numpy

我的目的是防止数组中的负索引。

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

1 个答案:

答案 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的整页。

您可能应该使用viewMyarray而不是Myarray的子类:

tab=np.load("file.txt")
tab.view(Myarray)