PYTHON - 计算NdArray中的最小值和最小指数

时间:2017-10-12 06:14:04

标签: python arrays numpy numpy-broadcasting

我有一个firebase.firestore().DocumentReference数组,我希望在数组中找到n*n,并以min格式获取min的索引

当然,这可以使用[x,y]循环并使用临时变量来完成,但我正在寻找一个更复杂的过程来执行此操作。

示例 -

for

我应该得到以下输出 -

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

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

TIA。

1 个答案:

答案 0 :(得分:2)

全球最低值和指数

展平数组,获取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))