簡體   English   中英

在二維數組中查找第一個最大值 - Python

[英]Find first maximum value in a 2d array - Python

我正在使用嵌套的 for 循環來查找 2d 數組中最大值的坐標,就像示例中的那樣。 如果該值重復,則在找到第一個值后循環中斷。 它的工作原理是這樣的,但我不擅長編寫代碼,我需要一種更有效的方法來做到這一點,因為當二維數組很大時(比如說一個(880x1024 矩陣)),找到值需要很長時間。 有什么建議么? 有沒有更簡單的方法來找到我需要的坐標?

example = np.array([[10, 20, 30], [40, 50, 60], [70, 101, 90], [101, 101, 101], [61, 62, 101], [71, 72, 73]])
count_i = 0
count_j = 0
for i in example:
    count_i += 1
    for j in i:
        count_j += 1
        if j == np.max(example):
            print('value found', j)
            print('row coordinate', count_i)
            col = matrix.shape[1] - ((matrix.shape[1] * count_i) - count_j)
            print('colum coordinate', col)
            break
    else:
        continue
    break

嘗試這個 -

  1. 您可以簡單地使用arr.max()獲得最大值
  2. 要獲取最大值第一次出現的索引,您可以將數組 unravel( unravel()轉換為平面一維,使用np.argmax()查找此數組中的第一個索引,該索引僅返回第一次出現的索引。
  3. 然后,您可以unravel_index獲取平面索引的索引,就像數組是 3D 和原始示例的形狀一樣。
example = np.array([[10, 20, 30], 
                    [40, 50, 60], 
                    [70, 101, 90], 
                    [101, 101, 101], 
                    [61, 62, 101], 
                    [71, 72, 73]])

maxvalue = example.max()

idx_flat = example.ravel().argmax()
idx = np.unravel_index(idx_flat, example.shape)

print('max value:',maxvalue)
print('first location:', idx)
max value: 101
first location: (2, 1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM