在具有返回值的数组中查找最小值
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)
我有一个数组,例如:
[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)