有人问这里的问题:Subclassing numpy ndarray problem但它基本上没有答案。python numpy中的子类ndarray:更改数组的大小和值
这是我的问题版本。假设您将numpy.ndarray子类化为当您尝试将元素设置为超出当前形状之外时自动展开的内容。您需要覆盖setitem并使用一些numpy.concatenate调用来构造一个新数组,然后以某种方式将其分配给“self”。如何将数组分配给“自我”?
class myArray(numpy.ndarray):
def __new__(cls, input_array):
obj = numpy.asarray(input_array).view(cls)
return(obj)
def __array_finalize__(self, obj):
if obj is None: return
try:
super(myArray, self).__setitem__(coords, value)
except IndexError as e:
logging.error("Adjusting array")
...
self = new_array # THIS IS WRONG
对自己的分配似乎只是无稽之谈,你如何支持替换一个对象?此外,使用numpy数组做这样的操作会使数组视图无效。你不能用子类来做到这一点,有一个原因'ndarray.resize'是如此限制... – seberg