【发布时间】:2020-05-21 15:33:42
【问题描述】:
关于过滤 numpy 数组有各种问题,包括:
但我有一个稍微不同的问题:
>>> x = np.empty(shape=(5,), dtype=[('ts', 'i8'), ('data', 'i8')])
>>> x['ts'] = [0, 1, 2, 5, 6]
>>> x['data'] = [1, 2, 3, 4, 5]
>>> x
array([(0, 1), (1, 2), (2, 3), (5, 4), (6, 5)],
dtype=[('ts', '<i8'), ('data', '<i8')])
>>> x[(x['ts'] > 2) & (x['ts'] < 4.9)]
array([], dtype=[('ts', '<i8'), ('data', '<i8')])
>>>
这正是我所期望的。但是,我需要过滤后的数组也包含5。除了使用for 或while 循环遍历数组的行并在匹配条件的最后一行之后包含索引的行之外,有没有其他方法可以过滤它?
【问题讨论】:
-
当你说你还需要包含“
5”是什么意思? -
@dumbPy 我需要基于
ts进行过滤,其中结束条件为ts == 5 的行。 -
好老的
<= 5有什么问题?x[(x['ts'] > 2) & (x['ts'] <= 5)] -
@dumbPy 如果你知道 5 是下一个
ts,那就什么都没有了。当我必须过滤时,我不知道 5 是下一个ts。我只知道最小值和最大值