1

有人在这里问这个问题:Subclassing 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
4

1 回答 1

3

为什么是子类?为什么不给你的包装对象它自己的数据成员,它是一个ndarray并使用__getitem____setitem__操作包装的数据成员?这基本上是ndarray已经做的,包装了 Python 的内置容器。还可以看看Python Pandas,它已经做了很多你所说的包裹在ndarray.

于 2012-10-03T22:31:16.177 回答