给定值为6.6。但值6.6不在数组中(下面的数据)。 但是给定值的最接近值是6.7。我怎么能得到这个职位?
import numpy as np
data = np.array([[2.0, 3.0, 6.5, 6.5, 12.0],[1,2,3,4,5]],dtype=float)
答案 0 :(得分:2)
你可以这样:
data[(np.fabs(data-6.6)).argmin(axis=0)]
输出:
6.7
编辑:2d:
如果是python 2.x:
map(lambda x:x[(np.fabs(x-6.6)).argmin(axis=0)], data)
python 3.x:
[r for r in map(lambda x:x[(np.fabs(x-6.6)).argmin(axis=0)], data)]
导致每行返回最接近的值。
所有人的一个价值:
data=data.flatten()
print data[(np.fabs(data-6.6)).argmin(axis=0)]
每行的索引位置:
ip = map(lambda x:(np.fabs(x-6.6)).argmin(axis=0), data)
答案 1 :(得分:1)
这是我认为最简单的方式。
>>> data = np.array([[2.0, 3.0, 6.5, 6.5, 12.0],[1,2,3,4,5]], dtype=float)
>>> data2 = np.fabs(data - 6.6)
>>> np.unravel_index(data2.argmin(), data2.shape)
(0, 2)
请参阅np.argmin
和np.unravel_index
功能。