与axis参数一起使用时,我无法理解argmax
和argmin
的输出。例如:
>>> a = np.array([[1,2,4,7], [9,88,6,45], [9,76,3,4]])
>>> a
array([[ 1, 2, 4, 7],
[ 9, 88, 6, 45],
[ 9, 76, 3, 4]])
>>> a.shape
(3, 4)
>>> a.size
12
>>> np.argmax(a)
5
>>> np.argmax(a,axis=0)
array([1, 1, 1, 1])
>>> np.argmax(a,axis=1)
array([3, 1, 1])
>>> np.argmin(a)
0
>>> np.argmin(a,axis=0)
array([0, 0, 2, 2])
>>> np.argmin(a,axis=1)
array([0, 2, 2])
如您所见,最大值是点(1,1),最小值是点(0,0)。所以在我的逻辑中,当我运行时:
np.argmin(a,axis=0)
我需要array([0,0,0,0])
np.argmin(a,axis=1)
我需要array([0,0,0])
np.argmax(a,axis=0)
我需要array([1,1,1,1])
np.argmax(a,axis=1)
我需要array([1,1,1])
我对事物的理解有什么问题?
通过添加
axis
参数,NumPy分别查看行和列。如果没有给定,数组a
将被展平为一个一维数组。axis=0
意味着操作依次在2D数组的列上执行。例如
np.argmin(a, axis=0)
返回四列中每个列的最小值的索引。每列中的最小值显示在下面的bold中:另一方面,
axis=1
意味着在a
的行之间执行操作。这意味着
np.argmin(a, axis=1)
返回[0, 2, 2]
,因为a
有三行。第一行最小值的索引为0,第二行和第三行最小值的索引为2:另请注意:如果要在完整数组中找到最大值的坐标,可以使用
默认情况下,
np.argmax
函数可以工作,along the flattened array,除非指定轴。要查看发生了什么,可以显式使用flatten
:我已经在上面的数组下对索引进行了编号,以使其更加清晰。注意,索引在
numpy
中从零开始编号。在指定轴的情况下,它也按预期工作:
这告诉您最大的值在第
1
行(第二个值),对于沿着axis=0
的每一列(向下)。如果稍微更改一下数据,您可以更清楚地看到这一点:如您所见,它现在标识了列1的第0行、列2和3的第1行以及列4的第3行中的最大值。
在documentation中有一个有用的
numpy
索引指南。相关问题 更多 >
编程相关推荐