查看: 30|回复: 0

numpy中axis轴问题记录小结

[复制链接]

0

主题

0

回帖

0

积分

积极分子

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2011-3-3
发表于 2026-1-8 10:08:53 | 显示全部楼层 |阅读模式

在NumPy中,数组可以有多个维度(或轴)。每个轴代表数据的一个方向。对于一个n维数组,它有n个轴,这些轴是从0开始编号的:

  • axis=0 表示第一个维度(最外层)
  • axis=1 表示第二个维度
  • 以此类推...

轴的概念

当你对一个数组进行操作时(例如求和、平均值等),你可以指定沿着哪个轴进行操作。如果你不指定轴,则操作会应用于整个数组的所有元素。

解释“设axis=i, 则numpy沿着第i个下标变化的方向进行操作”

这句话的意思是说,当你设置axis=i时,NumPy会在第i个维度上进行操作,即沿着该维度的变化方向进行操作。换句话说,NumPy会对该维度上的所有元素执行指定的操作,而其他维度保持不变。

具体例子说明

三维数组为例:

arr = np.array([[[ 0,  1],
                 [ 2,  3],
                 [ 4,  5],
                 [ 6,  7]],
 
                [[ 8,  9],
                 [10, 11],
                 [12, 13],
                 [14, 15]]])

这个数组的形状是 (2, 4, 2),表示它有两层(第一维度),每层有四行(第二维度),每行有两个元素(第三维度)。

不同轴的操作

axis=0:沿着最外层维度(第一维度)进行操作。

  • 这意味着我们会将两个子数组(页)对应位置的值相加。
  • 结果是一个形状为 (4, 2) 的数组:
array([[ 8, 10],
       [12, 14],
       [16, 18],
       [20, 22]])

axis=1:沿着中间维度(第二维度)进行操作。

  • 这意味着我们会将每一层内每一列的值相加。
  • 结果是一个形状为 (2, 2) 的数组:
array([[12, 16],
       [44, 48]])

axis=2:沿着最内层维度(第三维度)进行操作。

  • 这意味着我们会将每一层内每一个小数组内的值相加。
  • 结果是一个形状为 (2, 4) 的数组:
array([[ 1,  5,  9, 13],
       [17, 21, 25, 29]])

总结

  • axis=0:沿着第一个维度(最外层)进行操作,即对每一列的元素进行操作。
  • axis=1:沿着第二个维度(中间层)进行操作,即对每一行的元素进行操作。
  • axis=2:沿着第三个维度(最内层)进行操作,即对每个小数组内的元素进行操作。

关键点:当你设置axis=i时,NumPy会沿着第i个维度进行操作,这意味着在这个维度上的所有元素会被聚合在一起进行操作(如求和、平均等),而其他维度保持不变。这适用于任何维度的数组,不仅仅是二维数组。通过这种方式,你可以灵活地控制数据如何被处理和聚合。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部