2016-06-17 47 views
0

我必須使用numpy記錄數組來保存RAM並具有快速訪問權限。但我想在該記錄上使用成員函數。例如,numpy記錄的成員函數

X=ones(3, dtype=dtype([('foo', int), ('bar', float)])) 
X[1].incrementFooBar() 

對於普通Python類,我可以讓

class QQQ: 
    ... 
    def incrementFooBar(self): 
    self.foo+=1 
    self.bar+=1 
pass 
X=[QQQ(),QQQ(),QQQ()] 
X[1].incrementFooBar() 

我怎樣才能讓這樣的事情,但對於numpy的記錄?

回答

3

我可能是錯的,但我不認爲有一種方法可以像numpy數組那樣在記錄上使用成員函數。或者,你可以很容易地構建一個功能來完成同樣的事情:

X=ones(3, dtype=dtype([('foo', int), ('bar', float)])) 

def incrementFooBar(X, index): 
    X['foo'][index] += 1 
    X['bar'][index] += 1 

#then instead of "X[1].incrementFooBar()" 
incrementFooBar(X, 1) 
+1

從技術上講,這是一個函數。 python中的方法是綁定到類實例的函數。但我同意這只是這樣做的方法。向數組和元素添加方法並不容易。 – hpaulj

+0

@hpaulj,感謝您的更正。 –