对于整型数组,可以直接利用histogram函数可以实现,示例如下:
IDL>array = [1, 1, 2 , 4, 1, 3, 3, 2, 4, 5, 3, 2, 2, 1, 2, 6, -3]
IDL>distfreq = Histogram(array, MIN=Min(array))
IDL>mode = Where(distfreq EQ max(distfreq)) + Min(array)
IDL> Print, mode
2
但是对于浮点型数据,上面的方法就失效了,我暂时想到一个比较笨的办法,实例如下:
function mode, array
b = array[uniq(array, sort(array))]
array_count=fltarr(n_elements(b))
for ii=0, n_elements(b)-1 do begin
index=where(abs(array-b(ii)) le 1.e-10,count)
array_count(ii)=count
endfor
mode=b(where(array_count eq max(array_count)))
return,mode
end
pro test1
array = [1, 2.1, 1, 2.1, 3, 4, 5, 6, 6, 5]
print,mode(array)
end
参考网址:
http://www.idlcoyote.com/code_tips/mode.html
https://www.harrisgeospatial.com/docs/HISTOGRAM.html