多维数据上的numpy.argmax()不返回ndarray

时间:2017-04-24 16:07:02

标签: python arrays numpy

numpy.argmax的文档声明它返回数组中找到的最大值的索引位置,并通过返回ndarray int的{​​{1}}形状与输入数组:

numpy.argmax(a, axis=None, out=None)[source]

Returns the indices of the maximum values along an axis.
Parameters: 
a : array_like
    Input array.

axis : int, optional
    By default, the index is into the flattened array, otherwise along the specified axis.

out : array, optional
    If provided, the result will be inserted into this array. It should be of the appropriate shape and dtype.

Returns:    
index_array : ndarray of ints

    Array of indices into the array. It has the same shape as a.shape with the dimension along axis removed.

为什么命令会返回一个2-dim数组int

a = np.arange(6).reshape(2,3)

print np.argmax(a)
5

在我看来,reshape充当新视图,argmax命令仍然使用底层的1-dim数组。我尝试将数组复制到具有相同最终结果的初始化2-dim数组中。

这是Python 2.7.12,但由于他们在文档中有它,我相信这是预期的行为。我错过了什么吗?我怎样才能让ndarray返回?

1 个答案:

答案 0 :(得分:0)

从您引用的文档中:

  

默认情况下,索引进入展平数组

它提供a.flat[np.argmax(a)] == np.max(a)的整数。如果要将其转换为索引元组,可以使用&#34中链接的np.unravel_index函数;另请参阅"部分。

关于"与 a.shape 形状相同的部分,其中的尺寸已移除"如果您实际提供axis参数,则适用。另外,请注意"并删除的尺寸"部分;即使您指定axis,它也不会像您期望的那样返回与输入相同形状的数组。