Python 为什么numpy.argsort()要为领带刷索引?

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

我正在使用Python3。问题在于numpy.argsort()

我有两个数组(比如A和B)。我想按数组B中的值对数组A中的值进行排序。我使用以下代码

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文档,这一点都不明显!