2014-09-11 47 views
0
import numpy as np 
rec=np.recarray((10,),names=('x'),formats=('object')) 
for i in rec: 
    i.x=(0,0) 
print np.where(rec.x==(0,0)) 

結果是(array([], dtype=int32),),而不是我預期的0到9。爲什麼?任何人都可以爲我解釋,我應該如何獲得這種結構化數組的索引?numpy.where結構化陣列上帶有對象d元組

回答

0

更有效的將是:

rec = np.zeros(10, [('x', [('a', int), ('b', int)])]) 

這樣你存儲在內存中的緊湊表示,可以你可以比較的元素:

rec == rec[0] 

注意尋找雙零依舊有點棘手,但你可以做到一般:

rec == np.zeros(1, rec.dtype) 

如果你不需要單x它指的是對你可以刪除的記錄結構的該級別:

rec = np.zeros(10, [('x0', int), ('x1', int)]) 

全部或者簡單:

rec = np.zeros(10, [('x', '2i')]) 

的比較纔會同在任何情況下。

+0

謝謝!我想我走錯了方向。但爲什麼它返回空數組? – guofeng 2014-09-12 12:36:08

+0

我不確定你現在在問什麼。 – 2014-09-12 14:07:45

+0

我的意思是我的帖子中的代碼 – guofeng 2014-09-14 01:17:13