2016-06-17 6 views
0

RAMを節約し、高速アクセスを行うには、レコードのnumpy配列を使用する必要があります。しかし、私はそのレコードにメンバー関数を使いたい。例えば、通常のPythonのクラスについてはnumpyレコードのメンバー関数

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

が、私は

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、訂正してくれてありがとう。 –

関連する問題