NumPy中axis维度的直观理解与多维操作指南

七月
七月
发布时间:2026-10-14 | 6人浏览过
原创

本文深入解析NumPy中axis参数的含义,通过二维数组求和示例说明axis=0与axis=1的区别,并推广至多维数组的层级结构。文章结合代码实例,直观展示如何从整体到局部理解维度索引,帮助开发者准确掌握数组操作逻辑。

NumPy中axis维度的直观理解与多维操作指南

深入解析NumPy中的axis维度

在NumPy库中,维度(Axis)是一个核心概念,许多函数的参数都依赖于它。为了直观理解这一概念,我们先从二维数组入手,再将其逻辑推广至更复杂的多维数组场景。

注:部分资料将ndim属性称为维度,而将axis称为轴。此处沿用习惯,将axis直接称为维度,其中axis=0对应第一个维度。

二维数组示例分析

二维数组示例分析

以下展示一个具体的二维数组案例:


In [1]: import numpy as np

In [2]: x = np.random.randint(0, 9, (2, 3))

In [3]: x
Out[3]:
array([[0, 8, 6],
    [1, 2, 1]])

In [4]: x.ndim
Out[4]: 2

In [5]: x.shape
Out[5]: (2, 3)

In [6]: x[0]
Out[6]: array([0, 8, 6])

In [7]: x[:, 0]
Out[7]: array([0, 1])

In [8]: x.sum(axis=0)
Out[8]: array([ 1, 10, 7])

In [9]: x.sum(axis=1)
Out[9]: array([14, 4])

In [10]: x[0] + x[1]
Out[10]: array([ 1, 10, 7])

In [11]: x[:, 0] + x[:, 1] + x[:, 2]
Out[11]: array([14, 4])

观察上述代码输出,变量x包含2行3列数据,因此x被定义为一个二维数组。

结合代码第6和第7行的输出结果,可以明确得出结论:对于二维数组,第一维(axis=0)代表行方向,第二维(axis=1)代表列方向。

接下来,通过sum求和函数进一步探究x的第一维和第二维的具体含义。参考第8行和第9行的输出,当参数设置为axis=0时,计算结果是各列元素的总和;而当参数设置为axis=1时,计算结果则是各行元素的总和。

需要澄清的是,对axis=0(第一维)求和,并非简单地将第一维内的所有元素相加,而是沿着第一维的方向,将对应其他维度(即列)上的数据进行聚合。具体而言,如第10行输出所示,这等同于将第0行与第1行的对应元素相加。同理,对axis=1求和则是沿着列方向,将同一行内的所有元素相加。

NumPy中绝大多数维度相关的操作,均遵循上述类似的逻辑机制。

多维数组的维度区分

多维数组的维度区分

面对多维数组,如何准确区分各个维度?以下通过图示方式进行说明:

基于上述图示,核心结论如下:在概念上,维度是从整体到局部进行划分的。最外层结构构成第一个维度,随后依次向内深入,最内部的结构即为最后一维。

下面通过代码验证上述结论的正确性:


In [19]: x = np.random.randint(0, 9, (2, 3, 4))

In [20]: x
Out[20]:
array([[[0, 7, 5, 5],
    [6, 3, 1, 3],
    [7, 5, 3, 4]],

    [[8, 1, 4, 6],
    [8, 1, 4, 8],
    [3, 0, 8, 2]]])

In [21]: x[0]
Out[21]:
array([[0, 7, 5, 5],
    [6, 3, 1, 3],
    [7, 5, 3, 4]])

In [22]: x[:, 0, :]
Out[22]:
array([[0, 7, 5, 5],
    [8, 1, 4, 6]])

从第21行和第22行的输出可以看出,x[0]获取的是第一维的第一个元素(即第一个子数组),而x[:, 0, :]获取的是第二维的第一个元素。建议读者仔细体会这一索引逻辑。

以上就是本文关于NumPy axis维度的全部内容,希望能为读者提供参考,并欢迎大家继续支持本站获取更多技术分享。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表