【问题标题】:Filter numpy structured array based based on unique elements in one dimension基于一维中的唯一元素过滤 numpy 结构化数组
【发布时间】:2013-10-11 17:55:35
【问题描述】:

所以我有一个相当大(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 的唯一元素的新数组,我想第一次出现就可以了。我将如何有效地做到这一点?

【问题讨论】:

  • 您不需要data[:]['name'],只需data['name'] 即可:)

标签: python arrays numpy indexing


【解决方案1】:

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

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

那么您知道您需要访问的名称维度中的唯一索引。那么你应该可以只选择那些索引

data = data[indices]

【讨论】:

  • 谢谢,我知道某处肯定有内置的东西来获取索引,但不知何故我错过了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-14
  • 2019-06-28
  • 1970-01-01
相关资源
最近更新 更多