python - 如何优化这个 numpy 二维排序数组的创建?

标签 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)

我正在通过排序 order 来排序 coefficients:

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

这行得通,但可能比预期的要慢。如果这是一维的,我会使用 fromiter,但我不知道如何解决这个问题,因为它是二维的。我可以在这里进行优化吗?

最佳答案

要回答您的问题,只需coefficients[order.argsort()] 就足够了:)

另见 Numpy: sort by key function .

关于python - 如何优化这个 numpy 二维排序数组的创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24792074/

相关文章:

Python:子类化线程的 run 方法给出错误

c# - 帮我优化这个平均计算片段

css - 带有 r.js 优化器的多个 css 模块?

c++ - 指针数组声明的问题

Python 多处理比单处理花费更长的时间

javascript - 获取索引不是从 0 开始的数组中的第一个元素

sql - 如何在 SQL 中有效地找到多个记录的运行最新更新?

python - 排序字典 python 值降序,但键升序

python - python 中超过限制时如何更改 api token ?

python - 如何计算给定字符串可以拆分为素数的方式数?