2012-01-06 12 views
3

私は多次元のオブジェクトを持っています。私はnditerイテレータを使用してオブジェクトを操作したい。 は、ここでは、コードの例です:Python 2.6 numpy対話型配列オブジェクトエラー

import numpy as np 

class Test: 
    def __init__(self,a): 
     self.a = a 
    def get_a(self): 
     return self.a 

b = np.empty((2,3),dtype = object) 

t_00 = Test(0) 
t_01 = Test(1) 
t_11 = Test (11) 

b[0,0] = t_00 
b[0,1] = t_01 
b[1,1] = t_11 

for item in np.nditer(b,flags = ["refs_ok"]): 
    if item: 
     print item.get_a() 

私はデータにアクセスするために使用できるオブジェクト参照を含むように「アイテム」を期待します。 しかし、私は次のエラーが発生しています:AttributeError: 'numpy.ndarray'オブジェクトには属性 'get_a'がありません 私の質問はどうやって配列のオブジェクトにアクセスするために配列を通して移動できますか?

+0

一つの問題はget_aがself.aを返す必要があるということです期待通り、これが動作していることを確認することができます。 – ditkin

+1

あなたは正しいです。しかし、私は "テストオブジェクト"には全くアクセスできないという基本的な問題があります。各「アイテム」がnumpy.ndarrayを参照しているようです。 – user963386

答えて

0

反復のarray.flat方法は、ない仕事だろう、とあなたは私がコードで表示さ

for item in b.flat: 
    if item: 
     print item.get_a() 
+1

ありがとうございました!しかし、私はまだnditerイテレータを使用する方法を見つけることを試みています。私は普通の数字の配列を持っていれば大丈夫です。オブジェクトがあるときに問題があります。しかし、私はnditerが正しいオブジェクトアドレスをリナーニングしているのを見ることができますが、間違ったタイプである可能性があります。 – user963386

+0

悲しいことに、オブジェクト配列項目を変更しようとすると、これは機能しません。 – mueslo