例如,让我们考虑以下 numpy 数组:
[1, 5, 0, 5, 4, 6, 1, -1, 5, 10]
Run Code Online (Sandbox Code Playgroud)
另外,我们假设阈值等于3。也就是说,我们正在寻找至少两个连续值都高于阈值的序列。
输出将是这些值的索引,在我们的例子中是:
[[3, 4, 5], [8, 9]]
Run Code Online (Sandbox Code Playgroud)
如果输出数组被展平,那也可以!
[3, 4, 5, 8, 9]
Run Code Online (Sandbox Code Playgroud)
在我们的初始数组中,我们可以看到 forindex = 1我们有 value 5,它大于阈值,但不是每个值都大于阈值的序列(至少两个值)的一部分。这就是为什么这个索引不会出现在我们的输出中。
另一方面,对于索引,[3, 4, 5]我们有一系列(至少两个)相邻值[5, 4, 6],其中每个值都高于阈值,这就是它们的索引包含在最终输出中的原因!
我已经用这样的方法来处理这个问题:
(arr > 3).nonzero()
Run Code Online (Sandbox Code Playgroud)
上述命令收集高于阈值的所有项目的索引。但是,我无法确定它们是否连续。我曾想过尝试diff对上述代码片段的结果进行尝试,然后可能会定位其中的结果(也就是说,索引是一个接一个)。这会给我们:
np.diff((arr > 3).nonzero())
Run Code Online (Sandbox Code Playgroud)
但我仍然会在这里遗漏一些东西。
考虑以下数据框:
column_of_lists scalar_col
0 [100, 200, 300] 100
1 [100, 200, 200] 200
2 [300, 500] 300
3 [100, 100] 200
Run Code Online (Sandbox Code Playgroud)
scalar_col所需的输出将是一个 Series,表示 的标量值在列表列中出现的次数。
所以,在我们的例子中:
1 # 100 appears once in its respective list
2 # 200 appears twice in its respective list
1 # ...
0
Run Code Online (Sandbox Code Playgroud)
我尝试过以下方法:
df['column_of_lists'].apply(lambda x: x.count(df['scalar_col'])
Run Code Online (Sandbox Code Playgroud)
我知道它不起作用,因为我要求它计算一个系列而不是单个值。
欢迎任何帮助!