PYTHON - 计算 NdArray 中的最小值和最小值的索引

PYTHON - Calculate Min and Index of Min in an NdArray

我有一个n*n数组,我想在数组中找到min,并得到[x,y]格式的min的索引

当然,这可以使用 for 循环和使用临时变量来完成,但我正在寻找更复杂的过程来完成此操作。

示例 -

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

我应该得到以下输出 -

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

我可以实现类似的东西吗?

TIA。

全局最小值和索引

展平数组,得到argmin索引。使用 np.unravel_index 从中获取相应的 row-col 索引。此外,使用较早获得的扁平化 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))