我使用的是一个包含大量数据的大型结构:一个“表”对象。它具有可迭代等基本功能。它遍历所有具有.get_norm()
方法的项集合。为此,它使用两个索引器:rank_indexer
和i_rank_indexer
。要获得项目编号i,我基本上会拨打self.content[self.i_rank_indexer[i]]
。这两个索引器是彼此相反的,我必须让它们保持这种状态。
我想要的是能够在self.content中存储的所有15000个中获得300个第一项。目前,我正在做以下事情:
def sort(self):
scta = [0-self.content[self.i_rank_indexer[r]].get_norm() for r in range(self.cardinal)]
npa = np.argsort(scta)
self.i_rank_indexer = {x:self.i_rank_indexer[npa[x]] for x in range(len(npa))}
self.rank_indexer = {self.i_rank_indexer[key]:key for key in self.i_rank_indexer}
问题是,通过这样做,我正在排序一个15000长度的数组,这比我需要的更复杂(提取前300个元素)。最有效的方法是什么?我不需要保留rank_indexer系统,但我必须保留一种方法来访问它的排名。