Python 为什么numpy.argsort()要为领带刷索引?
我正在使用Python3。问题在于numpy.argsort() 我有两个数组(比如A和B)。我想按数组B中的值对数组A中的值进行排序。我使用以下代码Python 为什么numpy.argsort()要为领带刷索引?,python,arrays,numpy,Python,Arrays,Numpy,我正在使用Python3。问题在于numpy.argsort() 我有两个数组(比如A和B)。我想按数组B中的值对数组A中的值进行排序。我使用以下代码 A_ordered=A[B.argsort()] 在数组B中,出现平局的可能性很大。有时甚至,数组B中的每个值都是相同的 当B中有关系时,我不希望A中的值改变顺序。因此,当B中的值绑定时,我希望它们使用.argsort()保持相对索引的顺序 这里是一个问题的例子,当B中的每个值都是并列的。由np.argsort()给出的索引看起来像是乱序的 B
A_ordered=A[B.argsort()]
在数组B中,出现平局的可能性很大。有时甚至,数组B中的每个值都是相同的
当B中有关系时,我不希望A中的值改变顺序。因此,当B中的值绑定时,我希望它们使用.argsort()保持相对索引的顺序
这里是一个问题的例子,当B中的每个值都是并列的。由np.argsort()给出的索引看起来像是乱序的
B=np.empty(23000)#创建空数组
B.填充(0.5)#用0.5的相等值填充
打印(B.argsort())#正在尝试排序
Out[176]:数组([01533815337,…,7660768022999],数据类型=int64)
因为B中的所有值都相等,所以我希望
Out[176]:数组([0,1,2,…,229972299822999],dtype=int64)
我不想使用下面的方法基于B对A进行排序,因为在ties的情况下,A的值将用于排序
A=[x代表ux,x在排序中(zip(B,A))]
非常感谢 您需要告诉
argsort
使用稳定的排序方法
>>> print(B.argsort(kind='stable')) #trying to sort
[ 0 1 2 ... 22997 22998 22999]
非常感谢!基于np文档,这一点都不明显!