在具有返回值的数组中查找最小值



我有一个数组,例如:

[1 2 3 4 
2 3 4 0
5 4 0 6]

我想找到所有接近值3.9(在我的例子中,4(的值的索引

我尝试使用:

import numpy as np
def find_nearest(array, value):
idx = (np.abs(array - value)).argmin()

np.where(array== array.min())

但没有一个选项能给我正确的答案。

我很想得到:

(3,1),(1,2),(2,1)

在我的原始代码中,我迭代了一个形状为3648X5472的数组;对于";线圈可能太重了。

希望在这里得到一些帮助,谢谢

您可以使用:

a = np.array([[1, 2, 3, 4], 
[2, 3, 4, 0],
[5, 4, 0, 6]])
v = 3.9
b = abs(a-v)
xs, ys = np.where(b == np.min(b))

输出:

>>> xs
array([0, 1, 2])
>>> ys
array([3, 2, 1])

可选输出:

>>> np.c_[np.where(b == np.min(b))]
array([[0, 3],
[1, 2],
[2, 1]])
# or 
>>> np.argwhere(b==np.min(b))

您非常接近。当你找到第一个最接近值的索引时,你可以用`np.argwhere找到相等值的索引:

closest = array[np.abs(array - value).argmin()]
np.argwhere(array == closest)

最新更新