基于一维中的唯一元素过滤numpy结构化数组

时间:2013-10-04 16:25:02

标签: python arrays numpy indexing

所以我有一个相当大的(200k +行)结构化数组:

recordtype = np.dtype([('x',np.float32),('y',np.float32),('z',np.float32), \
                       ('u',np.float32),('v',np.float32),('w',np.float32), \
                       ('d',np.float32),('T',np.float32),('mdot',np.float32), \
                       ('f',np.float32),('t',np.float32),('name',np.str_,14)])
data = np.loadtxt('tmp2.out',dtype=recordtype,skiprows=2)

在“名称”列中,有一些非唯一元素:len(data[:]['name'])大于len(set(data[:]['name']))。我想创建一个只包含来自name的唯一元素的新数组,我想第一次出现就好了。我该如何有效地做到这一点?

1 个答案:

答案 0 :(得分:5)

获取唯一索引,您可以使用np.unique

unique_elements, indices = np.unique(data[:]['name'], return_index = True)

然后您知道您需要访问的名称维度中的唯一索引。然后你应该能够选择那些指数

data = data[indices]