如何在没有循环的情况下使用numpy.lexsort

时间:2015-08-21 14:56:21

标签: python arrays sorting numpy

您好我想使用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]

但我认为如果不自己编写循环,应该采用另一种方式。

由于

1 个答案:

答案 0 :(得分:3)

如果将assertArrayEquals(array1, array2, DELTA); 转换为numpy数组,则可以使用surnames返回的整数数组对其进行索引:

lexsort

如果你想坚持使用普通的Python列表,你可以这样做:

sorted_surnames = np.array(surnames)[ind]