提取二维数组中最小点的索引

时间:2019-04-10 09:13:28

标签: python arrays indexing minimum

我正在测试某个函数中A和B的值,需要找到该函数的最小值,以及A和B的哪些值会产生此最小值。我正在努力寻找一种方法来从我制作的数组中获取这些值。

我首先定义一些数组

ones = np.ones((3456,5184))
array = np.zeros([5,5])
real = threshold
test = testsunthree

real和test是在代码的早期定义的数组。

for A in range(-2,2):
  for B in range(-2,2):
    array[A,B]=((np.mean((real-(test*(A*0.1)+((B*0.1)*ones))**2))))

在这里,我正在测试A和B的值,该值在-2和2之间的范围内,并将每个值插入到函数中。然后将该函数的值存储在上面定义的空数组中。

array_min = array[array != 0].min()
print (array_min)
print zip(*np.where(array == array.min()))

然后,我试图确定该数组的最小值,并希望找到此函数的最小值A和B的值。这是我正在努力的部分,因为最后两行给出的值不正确。

1 个答案:

答案 0 :(得分:0)

这为您提供了名为array的数组的最小值。我为thresholdtestsunthree放置了随机值,以使代码正常工作并更改min()函数的利用率

import numpy as np

threshold = 4
testsunthree = 2
ones = np.ones((3456,5184))
array = np.zeros([5,5])
real = threshold
test = testsunthree

for A in range(-2,2):
  for B in range(-2,2):
     array[A,B]=((np.mean((real-(test*(A*0.1)+((B*0.1)*ones))**2))))

array_min = np.min(array)
print (array_min)

我迅速做出了一个肮脏的解决方案,以获取您具有数组最小值的不同的A,B值,可以轻松地对其进行改进,因为这只是一种快速的显示方法

index = np.where(array == array_min)
A_B_value = []

for i in range(0, len(index[0])):
    min_index = []
    min_index.append(index[0][i])
    min_index.append(index[1][i])
    A_B_value.append(min_index)

print(A_B_value)