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。为什么?任何人都可以为我解释一下,我该如何获得这种结构化数组的索引?
答案 0 :(得分: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')])
在任何情况下,比较都会起作用。