【发布时间】:2015-05-13 05:16:00
【问题描述】:
我遇到了一些困难。我正在尝试对python中的一些代码进行矢量化以使其更快。我有一个数组,我排序 (A) 并获取索引列表 (Ind)。我有另一个数组 (B),我想按索引列表排序,而不使用我认为会成为计算瓶颈的循环。
A = array([[2, 1, 9],
[1, 1, 5],
[7, 4, 1]])
Ind = np.argsort(A)
这是 Ind 的结果:
Ind = array([[1, 0, 2],
[0, 1, 2],
[2, 1, 0]], dtype=int64)
B 是我想按 Ind 排序的数组:
B = array([[ 6, 3, 9],
[ 1, 5, 3],
[ 2, 7, 13]])
我想使用Ind 重新排列B 中的元素(B 行按A 行索引排序):
B = array([[ 3, 6, 9],
[ 1, 5, 3],
[13, 7, 2]])
有什么想法吗?我很高兴得到任何好的建议。我想提一下我正在使用数百万个值,我的意思是 30000*5000 的数组。
干杯, 罗伯特
【问题讨论】:
-
您正在创建
Ind,然后立即在下一行覆盖它,仅供参考。 -
我只是想展示 Ind 的结果。
-
我不知道...使用 cmets 或 smth;当您明显覆盖刚刚创建的内容时,这会令人困惑;另外,在我们使用它的同时,请查看python.org/dev/peps/pep-0008 - 从长远来看,您可能会发现它很有用。
-
我会用与结果相同的值来覆盖它...我不是来这里打架的,我在这里解决问题...我感谢 cmets 并感谢您的提醒
标签: python arrays sorting numpy multidimensional-array