2017-10-12 57 views
1

我有一個n*n數組,我想找到數組中的min,並獲得min的指數[x,y]格式PYTHON - 計算閩閩指數在NdArray

當然,這可以使用for循環並使用臨時變量來完成,但我正在尋找更復雜的過程來完成此操作。

示例 -

[[1,2,8], 
    [7,4,2], 
    [9,1,7], 
    [0,1,5], 
    [6,-4,3]] 

我應該得到下面的輸出 -

Output- 
    Min = -4 
    Index = [4,1] 

我可以實現類似的東西?

TIA。

回答

2

全球最小值和指數

壓扁的陣列,得到了argmin指數。從np.unravel_index獲取相應的行列索引。此外,索引到扁平陣列與早期獲得的扁平化argmin指數爲最小值。

def smallest_val_index(a): 
    idx = a.ravel().argmin() 
    return a.ravel()[idx], np.unravel_index(idx, a.shape) 

採樣運行 -

In [182]: a 
Out[182]: 
array([[ 1, 2, 8], 
     [ 7, 4, 2], 
     [ 9, 1, 7], 
     [ 0, 1, 5], 
     [ 6, -4, 3]]) 

In [183]: val, indx = smallest_val_index(a) 

In [184]: val 
Out[184]: -4 

In [185]: indx 
Out[185]: (4, 1) 

全球最大的價值和指數

同樣,獲得全球maximum值,使用argmax -

def largest_val_index(a): 
    idx = a.ravel().argmax() 
    return a.ravel()[idx], np.unravel_index(idx, a.shape) 

樣品運行 -

In [187]: a 
Out[187]: 
array([[ 1, 2, 8], 
     [ 7, 4, 2], 
     [ 9, 1, 7], 
     [ 0, 1, 5], 
     [ 6, -4, 3]]) 

In [188]: largest_val_index(a) 
Out[188]: (9, (2, 0))