NumPy的:按键功能(Numpy: sort by key function)

2019-08-01 10:40发布

有没有一种办法,而不诉诸转换为Python列表使用钥匙(或比较器)功能的numpy的ndarray的行进行排序,?

特别是,我需要根据这个函数来进行排序:

c1,c2= 4,7
lambda row: c1*(row[1]/c2)+row[0]

我认识一个可能的解决方案将产生与各行的核心价值的载体,而是一个会怎么排序依据呢? 如果一个寻求这种载体转换成索引向量不知何故?

order= c1*(matrix[:,1]/c2)+matrix[:,0]
indexes= order_to_index( order )
return matrix[ indexes ]

这是现实吗?

Answer 1:

你的做法是正确的,它是类似的Schwartzian变换或装饰-排序-去除装饰(DSU)成语

就像我说的,你可以使用numpy的功能np.argsort 。 它做你的工作order_to_index



文章来源: Numpy: sort by key function