如果N在预定范围内,则执行操作



我有一个数字生成器/计数器,它将输出越来越高的值,范围从1 to 1,000

一旦到达1,000,计数将被重置并重新启动。

1--1,000之间生成的总数是可变的并且是随机的。

数字之间的delta是可变的和随机的。

示例:

1, 45, 120, 300, 590, 700, 750, 967
3,  4, 212, 400, 660, 800, 850, 901, 967, 998
50, 90, 121, 603, 780, 833, 890

每当计数器超过某个预先确定的阈值时,我需要触发一个操作。例如,如果阈值是第100个,则意味着如果生成新的100个句柄,则将触发该操作。

100 -> action
120
350 -> action
355
378
490 -> action
600 -> action
601
677
905 -> action

我不知道如何解决这个问题。我想使用模算子,但这还不够,因为生成的数字是不可预测的,它们的可分割性是无法预先确定的。

如何完成这项任务有什么想法吗?TIA-

您可以按步骤使用楼层划分,然后计算连续差异来识别组:

group = a//100
# array([0, 0, 1, 3, 5, 7, 7, 9, 0, 0, 2, 4, 6, 8, 8, 9, 9, 9, 0, 0, 1, 6,
#        7, 8, 8])
actions = np.r_[True, np.diff(group)!=0]
# array([ True, False,  True,  True,  True,  True, False,  True,  True,
#        False,  True,  True,  True,  True, False,  True, False, False,
#         True, False,  True,  True,  True,  True, False])

作为单个阵列:

np.vstack([a, actions]).T
array([[  1,   1],
[ 45,   0],
[120,   1],
[300,   1],
[590,   1],
[700,   1],
[750,   0],
[967,   1],
[  3,   1],
[  4,   0],
[212,   1],
[400,   1],
[660,   1],
[800,   1],
[850,   0],
[901,   1],
[967,   0],
[998,   0],
[ 50,   1],
[ 90,   0],
[121,   1],
[603,   1],
[780,   1],
[833,   1],
[890,   0]])

最新更新