python-如何在不使用循环的情况下使用numpy.lexsort

嗨,我想使用lexsort订购numpy.array.

import numpy as np
surnames = ['Hertz', 'Galilei', 'Hertz']
names = ['Heinrich', 'Galilao', 'Gustav']
ind = np.lexsort((names,surnames))

但是如何根据此索引排序一个数组?

我会做

surnames2 = surnames.copy()
for i, a in enumerate(ind):
     surnames2[i] = surnames[a]

但是我认为应该有另一种方式,而不自己写周期.

谢谢

解决方法:

如果将姓转换为numpy数组,则可以使用lexsort返回的整数数组对其进行索引:

sorted_surnames = np.array(surnames)[ind]

如果要坚持使用简单的Python列表,则可以执行以下操作:

sorted_surnames = [n for (i, n) in sorted(zip(ind, surnames), key=lambda x: x[0])]
上一篇:python-如何根据数组中值的相对大小将numpy数组按特定顺序排序(由单独的列表指定)


下一篇:如何从多个相同长度的列表中获取numpy数组并沿轴排序?