首页 > 解决方案 > 使用 numpy.argsort 的结果对数组进行排序

问题描述

像下面描述的就地重新排列不是一个好的目标,因为正如 hpaulj 指出的那样,“就地写入会相互影响,覆盖你的一些数据”。我会留下这个,但万一其他人有狭隘的视野并且不像我那样考虑这个。

我知道numpy.ndarray.sort可以对 numpy 数组进行就地排序。但是,如果我想用与第一个相同的排序索引对 2 个或更多数组进行排序怎么办?我知道我们可以使用 numpy.argsort() 来获取排序索引并执行以下操作:

sortInd = np.argsort(X)
X = X[sortInd]
Y = Y[sortInd]

但是,据我了解,这将暂时创建数组 X 和 Y 的副本(也许我在这里错了)。那么如何使用排序索引列表进行就地排序呢?就像是:

 sortInd = np.argsort(X)
 X.rearrange(sortInd)
 Y.rearrange(sortInd)

标签: pythonnumpy

解决方案


推荐阅读