嗨我想從ndarray派生一個類。我堅持在docs找到的配方,但我得到一個錯誤,我不明白,當我屁股getiem()函數。我確信這是它應該如何工作,但我不明白如何正確地做到這一點。我的班,基本上增加了一個「dshape」屬性的樣子:從ndarray調用傳承__getitem__
class Darray(np.ndarray):
def __new__(cls, input_array, dshape, *args, **kwargs):
obj = np.asarray(input_array).view(cls)
obj.SelObj = SelObj
obj.dshape = dshape
return obj
def __array_finalize__(self, obj):
if obj is None: return
self.info = getattr(obj, 'dshape', 'N')
def __getitem__(self, index):
return self[index]
當我現在嘗試做:
D = Darray(ones((10,10)), ("T","N"))
解釋將失敗,最大深度遞歸,因爲他所說的的GetItem一遍又一遍地。
有人可以向我解釋爲什麼以及如何實現getitem功能?
歡呼聲, 大衛
作爲一個側面說明,你可能實際上並不_want_實現自定義的'__getitem__'上'ndarray'你可能會和一個陣列的行名關聯,因爲(除非你直接通過,或者代碼與基類完全相同),ufuncs/broadcasting將不會像索引它那樣看到你的數組。那麼,你究竟想在這裏做什麼? – abarnert
這聽起來很有趣,我可以請你或任何人詳細說明這個話題,或者節省你的時間來指出這個問題的參考嗎?我會很感激。 – Magellan88