【发布时间】:2018-12-09 20:23:00
【问题描述】:
我有一个像这样大小(640X480)的二维数组:
[[1.2 , 9.5 , 4.8 , 1.7],
[5.5 , 8.1 , 7.6 , 7.1],
[1.4 , 6.9 , 7.8 , 2.2]] (this is a sample of a 4X3 array)
我必须以最快的方式找到数组中前 100(或 N)个最高值;所以我需要最优化、处理时间最短的代码。
由于它是一个巨大的数组,如果我只检查每个第二个元素或每个第三个或第四个元素就可以了。
算法的输出应该是一个元组列表,每个元组是高价值元素的二维索引。
例如,9.5 的索引是 (0,1)
我找到了解决办法,但是太慢了:
indexes=[]
for i in range(100):
highest=-1
highindex=0.1
for indi,i in enumerate(array):
for indj,j in enumerate(i):
if j>highest and not((indi,indj) in indexes):
highest= j
highindex=(indi,indj)
indexes.append(highindex)
【问题讨论】:
-
我已经找到了一种方法来做到这一点,但它需要太多时间,最好的方法是什么?
-
请分享花费太多时间代码。
-
好的,我已经分享了耗时算法。
标签: python arrays numpy search optimization