快速访问已排序的子集

时间:2017-03-23 07:47:00

标签: algorithm sorting numpy

假设我有nd矩阵Xn个样本和d个功能。假设我可以按照我的实际需要预先排序X(例如,根据每个单独的特征排序X的索引矩阵)。我正在使用的算法要求我做这样的事情:

process X sorted by feature j
after processing, we create a subset of X, X'
process X' sorted by feature j'
...
eventually there are no more subsets to process

有没有办法做到这一点,而不必通过我需要的功能X

这是迄今为止我能够提出的伪代码:

I = np.array([np.argsort(X[:, j]) for j in range(d)])
process X sorted by feature j = process X[I[j]]
now we get a subset of indices S
but how do we process X[S] sorted by j'?

1 个答案:

答案 0 :(得分:1)

您还可以在每行中保留原始行索引。这样,您只需要按索引筛选按j'排序的数组。也就是说,索引子集S对应于原始数组中的行子集。您可以在索引上过滤按j'排序的数组(仅获取其索引位于S中的原始行索引子集中的那些行)。这样,您获得按j'排序的数组子集,该子集仅包含S中的行。