python - numpy:argmin() 和 argmax() 函数的逻辑是什么?

标签 python arrays numpy argmax

我无法理解 argmaxargmin 与轴参数一起使用时的输出。例如:

>>> 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/

相关文章:

python - 从Python中的日期时间对象中删除毫秒

Python 列表索引拆分和操作

c - memcpy 将较小的数组连接成较大的数组

python - Poly1d 与 Matplotlib

python - 为多个 xlsx 文件目录中的每个文件创建具有特定列总和的新工作表

python - 在 PyQt 中使用 QThread 的正确方法示例?

machine-learning - MLP Keras 预测的循环程序

python - 使用 NetwrokX/Matplotlib 防止边和节点重叠

arrays - 如何在 purescript 中将字符列表转换为字符串

python - 在 scikit-learn 中使用列表还是 numpy 数组,结果会有所不同