如何优化这个numpy 2D排序数组创建?

时间:2014-07-16 22:44:27

标签: python arrays optimization numpy

我有一个名为coefficients的NxM矩阵,我想对其进行排序:

import numpy
N = 10
M = 42
coefficients = numpy.random.uniform(size=(N, M))

我有一个名为order的数组,其N个元素表示coefficients行应该在的顺序:

order = numpy.random.choice(range(N), N, False)

我正在按coefficients排序order

coefficients = numpy.array([mag for (orig, mag)
                            in sorted(zip(order, coefficients),
                                      key=lambda pair: pair[0])])

这样可行,但它可能比它应该慢。如果这是1D,我会使用fromiter,但我不知道如何解决这个问题,因为它是2D。我可以在这里进行优化吗?

1 个答案:

答案 0 :(得分:4)

要回答您的问题,只需coefficients[order.argsort()]即可:)

另见Numpy: sort by key function