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

finding the minimum value in an array with returned values

我有一个数组,例如:

[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())

但是 none 个选项给了我正确答案。

我希望得到:

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

在我的原始代码中,我迭代了一个形状为 3648X5472 的数组,因此“FOR”循环可能太重了。

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

您可以使用:

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)