我正在使用
index = (np.abs(array - value)).argmin()
在数组中找到与值之间的绝对差值最小的索引。
然而,有没有一个很好的干净方式,比如找到第二个最接近该值的索引?
答案 0 :(得分:11)
我认为这有效
a = np.linspace(0,10,30)
array([ 0. , 0.34482759, 0.68965517, 1.03448276,
1.37931034, 1.72413793, 2.06896552, 2.4137931 ,
2.75862069, 3.10344828, 3.44827586, 3.79310345,
4.13793103, 4.48275862, 4.82758621, 5.17241379,
5.51724138, 5.86206897, 6.20689655, 6.55172414,
6.89655172, 7.24137931, 7.5862069 , 7.93103448,
8.27586207, 8.62068966, 8.96551724, 9.31034483,
9.65517241, 10. ])
n = np.pi
a[np.argsort(np.abs(a-n))[1]]
# Output 3.4482758620689657
# the closest value is 3.103...
答案 1 :(得分:11)
您可以使用a
argpartition
的第k个最小元素的索引,而无需对整个数组进行排序
np.argpartition(a, k)[k]