我有一个包含对象id的数组traced_descIDs
,我想确定哪些项在这个数组中不是唯一的。然后,对于每个唯一的重复(小心)ID,我需要确定traced_descIDs
的哪些索引与之关联。在
例如,如果我们在这里使用跟踪的描述,我希望发生以下过程:
traced_descIDs = [1, 345, 23, 345, 90, 1]
dupIds = [1, 345]
dupInds = [[0,5],[1,3]]
我正在通过以下方法找出哪些对象具有多个条目:
^{pr2}$但是,这需要太长时间,因为len( traced_descIDs )
大约是150000。有没有更快的方法达到同样的效果?在
非常感谢任何帮助。干杯。在
虽然字典是O(n),但是Python对象的开销有时使使用numpy的函数更加方便,这些函数使用sorting和are O(n*logn)。在您的案例中,起点是:
如果您使用的是早于1.9的numpy版本,那么最后一行必须是:
^{pr2}$我们创建的三个数组的内容是:
要获取重复项:
获取指数需要更多的工作,但非常简单:
您当前的方法是
O(N**2)
,使用字典在O(N)
时间内完成:为了得到项目和索引:
^{pr2}$请注意,如果您想保持} 和{a2}方法。在
dupIds
中项目的顺序,那么就使用^{有一个^{} 表示每个项目的频率:
相关问题 更多 >
编程相关推荐