NumPy(axis=0 与axis=1)的区分

本文详细解析了NumPy和Pandas库中axis参数的使用,特别是在mean和drop方法中的应用。通过实例说明了axis=0与axis=1的区别,即前者沿列方向操作,后者沿行方向操作,帮助读者深入理解数据处理中的维度概念。

NumPy(axis=0 与axis=1)的区分

df = pd.DataFrame([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]], 
columns=["col1", "col2", "col3", "col4"])

df.mean(axis=1)

当执行下面代码后,删掉的却是一列:

df.drop("col4", axis=1)

df.mean其实是在每一行上取所有列的均值,而不是保留每一列的均值。也许简单的来记就是axis=0代表往跨行(down),而axis=1代表跨列(across),作为方法动作的副词(译者注)

换句话说:

  • 使用0值表示沿着每一列或行标签\索引值向下执行方法
  • 使用1值表示沿着每一行或者列标签模向执行对应的方法

下图代表在DataFrame当中axis为0和1时分别代表的含义:

axis参数作用方向图示
另外,记住,Pandas保持了Numpy对关键字axis的用法,用法在Numpy库的词汇表当中有过解释:

轴用来为超过一维的数组定义的属性,二维数据拥有两个轴:第0轴沿着行的垂直往下,第1轴沿着列的方向水平延伸。

所以问题当中第一个列子 df.mean(axis=1)代表沿着列水平方向计算均值,而第二个列子df.drop(name, axis=1) 代表将name对应的列标签(们)沿着水平的方向依次删掉。

NumPy 中,`axis` 参数用于指定操作沿着数组的哪个进行。理解 `axis=0` 和 `axis=1` 的区别需要结合数组的维度结构。 ### `axis=0` 的作用 当设置 `axis=0` 时,操作会沿着数组的**第一个维度(行方向)**进行。这意味着 NumPy 会沿着行的方向对列执行操作。例如,在一个二维数组中,`axis=0` 会将每一列的数据作为一个整体进行处理。 以下是一个示例,展示 `axis=0` 的效果: ```python import numpy as np x = np.array([[11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25], [26, 27, 28, 29, 30], [31, 32, 33, 34, 35]]) y = np.sum(x, axis=0) print(y) # [105 110 115 120 125] ``` 在这个例子中,`np.sum(x, axis=0)` 对每一列的所有元素求和,最终输出一个一维数组,其中每个元素是对应列的总和[^2]。 ### `axis=1` 的作用 当设置 `axis=1` 时,操作会沿着数组的**第二个维度(列方向)**进行。这意味着 NumPy 会沿着列的方向对行执行操作。例如,在一个二维数组中,`axis=1` 会将每一行的数据作为一个整体进行处理。 以下是一个示例,展示 `axis=1` 的效果: ```python y = np.sum(x, axis=1) print(y) # [ 65 90 115 140 165] ``` 在这个例子中,`np.sum(x, axis=1)` 对每一行的所有元素求和,最终输出一个一维数组,其中每个元素是对应行的总和[^2]。 ### 高维数组中的 `axis` 操作 对于更高维度的数组,`axis` 参数的作用方式类似。例如,在一个四维数组中,`axis=3` 表示沿着第四个维度(最内层的)进行操作。 以下是一个四维数组的示例: ```python import numpy as np a = np.array([[[[1, 2], [1, 3], [1, 4]], [[1, 7], [1, 6], [1, 5]], [[1, 2], [1, 3], [1, 4]]]]) print(np.sum(a, axis=3)) # Sum along the fourth axis print(np.sum(a, axis=3).shape) # Resulting shape print(np.sum(a, axis=3, keepdims=True)) # Keep the summed axis as dimension of 1 print(np.sum(a, axis=3, keepdims=True).shape) # Resulting shape with keepdims ``` 在这个例子中,`axis=3` 表示沿着最内层的(即每个子数组的最后一个维度)进行求和操作。通过 `keepdims=True`,可以保留被操作的维度为 1[^1]。 ### 总结 - `axis=0`:沿着行方向操作,对列进行操作。 - `axis=1`:沿着列方向操作,对行进行操作。 - 在更高维数组中,`axis=i` 表示沿着第 `i` 个维度进行操作。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值