矩阵的最大值,最大元素的索引

问题描述:

请考虑Python 3.5中我的numpy矩阵的以下图片。 A是一个形状矩阵(35,50)。矩阵的最大值,最大元素的索引

enter image description here

np.max(A)回报最大的权值线,最大的确是2372在我的数据集。但是当我试图重现numpy的文件,如下所示:

https://docs.scipy.org/doc/numpy/reference/generated/numpy.matrix.argmax.html

我没有得到这样的相似文档中的结果的结果。所有的索引对都不相同。我尝试了第一个索引对:A[18][29],但它是具有值506的元素的索引,当时我认为这只会返回矩阵最大值的索引。这使我有2个问题:

  1. 如果这些指标对都不是矩阵的最大的指数,即np.max(A),那么它们是什么?

  2. numpy是否有办法返回任何给定形状(我的形状为35,50)的矩阵内实际元素的索引?理想情况下,如果我输入:A[row_index][column_index]我想输出是价值等于np.max(A)标元素,在我的情况下,该值将是2372

我也不清楚为什么它不工作的我期望它的方式,如果我不得不猜测,我会说它与数组中的数组有关,或者我只是没有使用正确的numpy扩展。

请指教,

谢谢

row_index是最大的每一列,50列,50个指数的指数。

col_index是每行最大值的索引,35个值。

在这两个数组中配对值没有意义。是的,其中的一对将成为整个数组max的索引,但您无法通过查看它们来判断。

========================

In [573]: x 
Out[573]: 
array([[15, 8, 6, 3, 4, 5], 
     [22, 1, 13, 10, 18, 7], 
     [21, 14, 20, 16, 9, 2], 
     [11, 12, 23, 19, 17, 0]]) 
In [574]: i0=np.argmax(x,axis=0) 
In [575]: i1=np.argmax(x,axis=1) 
In [576]: i0 
Out[576]: array([1, 2, 3, 3, 1, 1], dtype=int32) 
In [577]: i1 
Out[577]: array([0, 0, 0, 2], dtype=int32) 

为了获取最大价值,我们必须将这些指标与正确的结合形状为np.arange

In [578]: x[i0,np.arange(6)] 
Out[578]: array([22, 14, 23, 19, 18, 7]) 
In [579]: x[np.arange(4),i1] 
Out[579]: array([15, 22, 21, 23]) 

23两个都存在,但不是在同一个索引

In [580]: np.argmax(x) 
Out[580]: 20    # location in the flattened version of x 
In [581]: x.flat[20] 
Out[581]: 23 
In [582]: x[i0[2], i1[3]] # (3, 2) 
Out[582]: 23 

要扁平索引转换成2D,使用:

In [583]: np.unravel_index(20,x.shape) 
Out[583]: (3, 2) 
In [584]: x[3,2] 
Out[584]: 23 
+0

很好的解释,谢谢你对我的帮助看看这些numpy扩展应该如何工作 –