我无法理解argmax和argmin与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
a
axis=0表示该操作依次在2D数组的列中 向下 执行a。
axis=0
例如,np.argmin(a, axis=0)返回四列中每一列的最小值的索引。每列中的最小值在下面以 粗体显示 :
np.argmin(a, axis=0)
>>> a array([[ **1** , **2** , 4, 7], # 0 [ 9, 88, 6, 45], # 1 [ 9, 76, **3** , **4** ]]) # 2 >>> np.argmin(a, axis=0) array([0, 0, 2, 2])
另一方面,axis=1表示该操作 跨 的行执行a。
axis=1
这意味着np.argmin(a, axis=1)返回,[0, 2, 2]因为a有三行。第一行的最小值的索引为0,第二行和第三行的最小值的索引为2:
np.argmin(a, axis=1)
[0, 2, 2]
>>> a # 0 1 2 3 array([[ **1** , 2, 4, 7], [ 9, 88, **6** , 45], [ 9, 76, **3** , 4]]) >>> np.argmin(a, axis=1) array([0, 2, 2])