我的目标是在一个列表中找到一些(在此示例中为= 3)最大值fourire
,识别列表中的位置,并在另一个列表中获取相应的(position_wise)值{{1因此打印输出应该像
freq
2. 27.
9. 25.
附加的python工作得很好......等等。
**请注意,我正在处理numpy数组,因此index()无效....
有没有办法改善以下几点?
4. 22.
答案 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]
产生相同的输出