Python numpy中argsort()的用户定义的连接断路器

Python numpy中argsort()的用户定义的连接断路器,python,python-3.x,numpy,sorting,args,Python,Python 3.x,Numpy,Sorting,Args,我有两个数组v和c(可以理解为价值和成本) 我需要对v执行argsort(),这样,如果v中的两个元素相同,则需要根据它们在c中对应的元素对它们进行排序 范例 v = [4,1,4,4] # Here 0th, 2nd and 3rd elemnt are equal c = [5,0,30,10] numpy.argsort(v) = [1,0,2,3] # equal values sorted by index 所需输出 [1,0,3,2] # c[0] < c[3] <

我有两个数组
v
c
(可以理解为价值和成本)

我需要对
v
执行
argsort()
,这样,如果
v
中的两个元素相同,则需要根据它们在
c
中对应的元素对它们进行排序

范例

v = [4,1,4,4] # Here 0th, 2nd and 3rd elemnt are equal
c = [5,0,30,10]
numpy.argsort(v) = [1,0,2,3] # equal values sorted by index 
所需输出

[1,0,3,2] # c[0] < c[3] < c[2]
[1,0,3,2]#c[0]
如何在Python中实现这一点?

该函数从文档中接收一个
order
参数:

如果是定义了字段的数组,则此参数指定 要比较第一个、第二个等的字段

因此,您可以从这两个值创建一个结构化数组,并按顺序传递字段:

import numpy as np

v = [4, 1, 4, 4]  
c = [5, 0, 30, 10]

s = np.array(list(zip(v, c)), dtype=[('value', 'i4'), ('cost', 'i4')])
result = np.argsort(s, order=['value', 'cost'])

print(result)
输出

[1 0 3 2]