gpt4 book ai didi

python - 通过对列数据的按位操作(位掩码)过滤结构化数组

转载 作者:行者123 更新时间:2023-11-28 19:22:42 25 4
gpt4 key购买 nike

我有一个结构化数组。一列 ( event_type ) 是一个位域。我想通过 event_type 过滤数据.

以前我用过filter()但它会产生一个 list需要将其转换回数组,我需要保留 dtype使用列名和原始数组中的其他内容。

event_type是事件的名称,namespaces['event_types']['event_types']是来自name ta an int的 map 适当位设置为 1 的值- 面具。

旧代码是这样的:

event_type ='new_best'
event_type = rep.namespaces['event_types']['event_types'][event_type]
data = zip(rep.get_data('best_age'), rep.get_data('event_type'))
data = filter( lambda datum : int(datum[1]) & int(event_type), data)
data = list(zip(*data))[0]

在重构时,我发明了一个函数来处理 numpy类型:

def filter_stats(self, event_type):
event_type = int(self.namespaces['event_types']['event_types'][event_type])
data = self.data['stats']
mask = np.bitwise_and(data['event_type'], event_type) #make a "bitwise" mask
mask = np.logical_and(mask, True) #convert it into logical values
#print(event_type, data['event_type'], mask)
return data[ mask ]

现在我可以调用 filter_stats('new_best')['best_age']用于相同的功能。

我的问题:

  1. 这是好的方法吗?或者有没有更好的方法来过滤数据。
  2. 它能更简洁吗?我特别不喜欢转换 mask来自 intbool类型,但我不知道如何跳过它。

最佳答案

我认为您可以将这两行合并为:

mask = (data['event_type'] & event_type).astype(bool)

关于python - 通过对列数据的按位操作(位掩码)过滤结构化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21193145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com