我有一個數字生成器/計數器,它將輸出越來越高的值,范圍從1 to 1,000.
一旦達到1,000,計數將被重置并重新啟動。
之間產生的總數1--1,000是可變的和隨機的。
數字之間的增量是可變的和隨機的。
例子:
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 -> action
120
350 -> action
355
378
490 -> action
600 -> action
601
677
905 -> action
我被阻止如何解決這個問題。我雖然使用模數運算子,但這還不夠,因為生成的數字是不可預測的,并且它們的可分性無法預先確定。
任何想法如何完成這項任務?TIA
uj5u.com熱心網友回復:
您可以按步數使用地板除法,然后計算連續差異以識別組:
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]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/511868.html
