【发布时间】:2019-06-18 03:34:01
【问题描述】:
假设我有一个如下所示的列表:
[1, 2, 2, 5, 8, 3, 3, 9, 0, 1]
现在我想对相同元素的索引进行分组,所以结果应该是这样的:
[[0, 9], [1, 2], [3], [4], [5, 6], [7], [8]]
如何有效地做到这一点?我尽量避免使用循环,所以任何使用 numpy/pandas 函数的实现都很棒。
【问题讨论】:
-
numpy.argsort 后跟一次遍历索引(引用数组元素)以对它们进行分组(在不同元素上断开组)。或使用 itertools.groupby 进行第二步。
-
你能通过给出一些代码示例来指定“一次通过索引”吗?@randomir
-
顺序重要吗?另外,你的尝试在哪里?
-
“我尽量避免使用循环”——为什么?
-
@cs95 顺序实际上并不重要。我尽了最大努力,但无法提出一个好的实现(即使使用循环),所以不得不在这里问。