优化与heapq.nlargest相关的python文件并使用循环扩展

时间:2013-04-17 21:03:21

标签: python numpy extend

我的目标是在一个列表中找到一些(在此示例中为= 3)最大值fourire,识别列表中的位置,并在另一个列表中获取相应的(position_wise)值{{1因此打印输出应该像

freq
2. 27.
9. 25.

附加的python工作得很好......等等。

**请注意,我正在处理numpy数组,因此index()无效....

有没有办法改善以下几点?

4.  22.

1 个答案:

答案 0 :(得分:1)

import numpy as np

fourire = np.array(fourire)
freq = np.array(freq)

ix = fourire.argsort(kind='heapsort')[-3:][::-1]

for a, b in zip(freq[ix],fourire[ix]):
    print a, b

打印

2.0 27.0
9.0 25.0
4.0 22.0

如果您想使用 heapq 而不是 numpy ,稍微修改上面的代码会产生:

ix = heapq.nlargest(3,range(len(freq)),key=lambda x: fourire[x])
for x in ix:
    print freq[x], fourire[x]

产生相同的输出