我无法理解 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
被展平为单个 1D 数组。
axis=0
表示依次向下执行二维数组a
的列。
例如 np.argmin(a, axis=0)
返回四列中每一列中最小值的索引。每列中的最小值显示在下面的粗体中:
>>> a
array([[ <b>1</b>, <b>2</b>, 4, 7], # 0
[ 9, 88, 6, 45], # 1
[ 9, 76, <b>3</b>, <b>4</b>]]) # 2
>>> np.argmin(a, axis=0)
array([0, 0, 2, 2])
另一方面,axis=1
表示跨 a
的行执行操作。
这意味着 np.argmin(a, axis=1)
返回 [0, 2, 2]
因为 a
有三行。第一行最小值的索引为0,第二、三行最小值的索引为2:
>>> a
# 0 1 2 3
array([[ <b>1</b>, 2, 4, 7],
[ 9, 88, <b>6</b>, 45],
[ 9, 76, <b>3</b>, 4]])
>>> np.argmin(a, axis=1)
array([0, 2, 2])
关于python - numpy:argmin() 和 argmax() 函数的逻辑是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28697993/