2017-10-12 89 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))