1

誰かがここで質問します: Subclassing numpy ndarray problemですが、基本的には答えられていません。

これが私のバージョンの質問です。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。これは基本的にすでに行われていることであり、Pythonの組み込みコンテナーをラップします。また、あなたが話していることの多くをすでに上にラップして実行しているPythonPandasも見てください。__getitem____setitem__ndarrayndarray

于 2012-10-03T22:31:16.177 に答える