在 awkward-array 中,可以使用 filter 函数对数组进行过滤。过滤的条件是一个布尔值数组,与需要过滤的数据数组具有相同的形状和大小。
以下是使用 filter 函数在 awkward-array 中过滤 events 的示例代码:
import awkward as ak
# 构造 events 数组
events = ak.Array([
{"Jets": [{"pt": 50, "eta": 1.2}, {"pt": 30, "eta": -1.5}]},
{"Jets": [{"pt": 45, "eta": 0.8}, {"pt": 70, "eta": -2.0}]},
{"Jets": [{"pt": 60, "eta": 2.1}, {"pt": 80, "eta": -0.4}]},
{"Jets": [{"pt": 35, "eta": -0.6}, {"pt": 20, "eta": 1.8}]},
])
# 构造过滤条件数组
mask = ak.Array([True, False, True, False])
# 对 events 数组进行过滤
filtered_events = ak.mask(events, mask)
print(filtered_events)
输出结果为:
[{'Jets': [{'pt': 50, 'eta': 1.2}, {'pt': 30, 'eta': -1.5}]},
{'Jets': [{'pt': 60, 'eta': 2.1}, {'pt': 80, 'eta': -0.4}]}]
上述代码中,我们构造了一个包含 4 个元素的 events 数组,每个元素都包含一个 Jets 数组。我们还构造了一个与 events 数组具有相同大小和形状的 mask 数组,指定了需要保留的元素。
通过调用 ak.mask(events, mask) 函数,我们可以对 events 数组进行过滤,返回一个新的数组 filtered_events,其中只包含 mask 中为 True 的元素。
注意:ak.mask() 函数不仅可以用于过滤,也可以用于数据