【发布时间】:2014-11-26 02:42:56
【问题描述】:
假设我有以下数字列表:
my_array = [0, 3, 4, 7, 8, 9, 10, 20, 21, 22, 70]
我想在这个列表中找到包含连续整数且没有间隙的每个闭合区间。如果列表中的任何数字有多个这样的间隔,我们只保留最大的任何这样的间隔。上面的正确答案应该是:
[0, 0]
[3, 4]
[7, 10]
[20, 22]
[70, 70]
要查看此内容,请注意例如:
闭区间
[0,0]包含整数0,不包含任何间隙,并且其成员都不包含在任何其他闭区间中。闭区间
[3,4]不包含间隙,并且其成员不包含在任何其他没有大于自身的间隙的闭区间中。
我如何在 numpy 中做到这一点?我开始编写一个算法,使用np.diff(my_array) 来检测数组中的转换,但它在极端情况下失败,例如只包含一个项目的区间。
【问题讨论】:
-
你怎么定义的,每一个闭合的连续区间??,规则是什么??
-
@Hackaholic 我大大扩展了 OP 以阐明我的意思。如果还不清楚,请告诉我。
-
现在明白了,现在清楚了
-
我会启动一个计数器并在列表中移动计数器。每当它停止时,它覆盖的所有数字都会得到一个连续的数字。将这些数字与列表中的原始数字一起放入字典中。然后打印特定计数的字典条目的最小值、最大值。
-
为什么不用纯 python 编写代码。这是一个 15 行的实现。