【发布时间】:2020-04-26 23:38:25
【问题描述】:
假设我有一个 NumPy 数组:
a = np.array([0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 9, 10, 11, 12, 13, 13, 13, 14, 15])
我有一个用户指定的长度m = 2,以便查看时间序列中是否有该长度的任何重复。在这种情况下,长度为m = 2 的重复是:
[2, 2]
[5, 5]
[9, 9]
[9, 9]
[13, 13]
用户可以将其更改为m = 3,长度为m = 3的重复为:
[9, 9, 9]
[13, 13, 13]
我需要一个函数来返回找到重复的索引或None。因此,对于 m = 3,该函数将返回以下 NumPy 起始索引数组:
[11, 17]
对于m = 4,该函数将返回None。完成此任务的最干净、最快的方法是什么?
更新
请注意,数组不必排序,我们对排序后的结果感兴趣。我们只想要未排序数组的结果。 m = 2 的结果应该与此数组相同:
b = np.array([0, 11, 2, 2, 3, 40, 5, 5, 16, 7, 80, 9, 9, 9, 1, 11, 12, 13, 13, 13, 4, 5])
【问题讨论】:
-
a是否总是排序? -
那么,
(2, 6, 11, 12, 17, 18)是m=2吗? -
好问题。
a永远不会排序,是的,这是m = 2的返回数组 -
我们可以先排序吗?
-
还是无法对数组进行排序?