You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何np.mean()中axis=0是按列求均值而非按行?

NumPy中axis参数的理解困惑

先看示例数组:

import numpy as np

arr = np.array([[1,2,3], [1,2,3]])

执行后输出:

>>> arr
array([[1, 2, 3],
       [1, 2, 3]])
>>> arr.shape
(2, 3)

由于arr.shape[0]为2,代表数组的行数,我原本预期np.mean(arr, axis=0)会计算每行的均值,但实际它是按列计算均值:

>>> np.mean(arr, axis=0)
array([1., 2., 3.])  # 每列的均值
>>> np.mean(arr, axis=1) 
array([2., 2.])  # 每行的均值

NumPy文档中对axis参数的描述为:

"Axis or axes along which the means are computed."

我最初认为axis=0会按行计算均值并返回每行的均值,因为arr.shape[0]对应行数。我使用的是Python 3.10.0和NumPy 2.2.3版本。

我是不是误解了文档?能否帮忙澄清这个约定?为何axis=0是合并行而非列?


澄清NumPy的axis约定

你并没有误解文档的字面表述,但需要抓住NumPy中axis参数的核心逻辑:axis指定的是要「压缩/合并」的维度,而非要保留的维度。

  • 对于二维数组,axis=0对应shape的第一个元素(行维度)。当指定axis=0计算均值时,NumPy会沿着行的方向聚合数据——也就是把每一列的所有行元素汇总求平均,最终消除行维度,得到列维度的结果(对应示例中3个元素的输出)。
  • axis=1对应shape的第二个元素(列维度),沿着列的方向聚合数据,把每一行的所有列元素汇总求平均,消除列维度,得到行维度的结果(示例中2个元素的输出)。

文档里的"along which the means are computed"可以理解为:沿着该轴的方向遍历,将该轴上的所有元素进行聚合计算,最终移除这个轴。

换个直观的角度:二维数组中,axis=0是垂直方向(上下)的聚合,axis=1是水平方向(左右)的聚合。


内容的提问来源于stack exchange,提问作者sadra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 00:37:45