假设我有n
个d
矩阵X
,n
个样本和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'?
答案 0 :(得分:1)
您还可以在每行中保留原始行索引。这样,您只需要按索引筛选按j'
排序的数组。也就是说,索引子集S
对应于原始数组中的行子集。您可以在索引上过滤按j'
排序的数组(仅获取其索引位于S
中的原始行索引子集中的那些行)。这样,您获得按j'
排序的数组子集,该子集仅包含S
中的行。