使用索引使用NumPy提取k个最大条目

时间:2019-03-01 11:48:39

标签: python numpy

我遇到了一个不使用循环即可解决以下问题的问题。在实际问题集中,n是如此之大,以至于循环会导致性能问题:

import numpy as np
np.random.seed(42)
# real problem n >> 10000 and 2 < m < 10
n = 20
m = 4
A = np.random.rand(n,m)
# the index is nessary because later on one needs to track the sources 
index = np.argsort(-A,axis=1)[:,0:2]
# next line is now not working as supposed
# B should be n times 2 and consist the biggest entries in very row of A
B = A[:,index]

另一个限制是,我以后需要使用“索引”或类似的东西来提取值,这些值形成相同的位置但在不同的矩阵中。 A只是按东西顺序排序的值...但是还有更多带有值的矩阵。我在最后一行尝试了np.ix_作为另一种方法,但可能做错了。

当然,答案是在NumPy文档中的有关花哨和/或高级索引的地方……但是我现在暂时看不到它。因此,任何更详细的提示可能会对我有所帮助。谢谢。

抱歉,但是“在numpy中用另一个索引一个数组”不是很有帮助。我有一个约束,它排除了两个答案(无循环)中的一个,并且第一个不依赖于此类index-Array或以后可以使用的相关index-Array。

0 个答案:

没有答案