小白都能看懂的numpy与pandas中axis解释

本文详细解析了在numpy和pandas中axis参数的工作原理,通过二维和多维数据集的实例,阐述了如何沿不同轴方向进行操作,如求平均值、删除列等,帮助读者从新的角度理解这一关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步

1.axis参数

在numpy与pandas,以及各种涉及到数值计算的类库中,都会有axis这个参数。这个参数非常重要,初学者理解起来比较困难,如果按二维矩阵中行列的概念去理解会比较难理解。今天咱们用另外一种角度去理解axis参数,比较清晰更容易理解。

2.二维的情况

先看一个例子

data = pd.DataFrame([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]], columns=['c1', 'c2', 'c3', 'c4'], dtype=int)

这个dataframe为

   c1  c2  c3  c4
0   1   1   1   1
1   2   2   2   2
2   3   3   3   3
print data.mean(axis=0)

沿着axis=0的方向求平均值,最终的结果是

c1    2.0
c2    2.0
c3    2.0
c4    2.0

如果沿着axis=1的方向球平均值,最终结果为

0    1.0
1    2.0
2    3.0

原始数组的维度为3*4。axis=0,相当于是拿掉外层的括号,消灭了"行"的维度,然后对第一列,第二列,第三列,第四列各自求平均。最后求平均值的结果就是消灭了最外层的维度,也就是3这个维度,剩下的结果是一个4维的向量。

同理,如果 axis=1,相当于拿掉的是里层的括号,消灭了"列"的维度,然后对每一行各自求平均。最后的结果就是消灭了里层的维度,也就是4这个维度,剩下的结果是一个3维的向量。

print data.drop('c4', axis=1)

上面drop的逻辑,同理是沿着内层的括号进行操作。最终是内层的维度被drop掉了一列,得到一个3*3的矩阵,结果如下

   c1  c2  c3
0   1   1   1
1   2   2   2
2   3   3   3

3.多维情况

再看一个多维的情况

data = np.arange(24).reshape(2, 3, 4)
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]

这个多维数组的维度是 2 ∗ 3 ∗ 4 2*3*4 234,同样我们来做一下求平均操作

print data.mean(axis=0)

按照上面的理解, axis=0是最外层的括号。最终得到的结果维度为3*4。

[[ 6.  7.  8.  9.]
 [10. 11. 12. 13.]
 [14. 15. 16. 17.]]

具体的计算逻辑为:我们要消灭的维度为2,所以参与计算的元素是两个,比如6这个值,是0与12求平均的结果,结果矩阵b中b[0][0]是a[0][0][0]与a[1][0][0]求平均的结果!

print data.mean(axis=1)

要消灭的维度为3,参与计算的元素是3个,最后的结果是2*4。

[[ 4.  5.  6.  7.]
 [16. 17. 18. 19.]]

结果矩阵b[0][0]是a[0][0][0]+a[0][1][0]+a[0][2][0]平均的结果

print data.mean(axis=2)

结果如下

[[ 1.5  5.5  9.5]
 [13.5 17.5 21.5]]

具体分析过程与前面类似,就不再重复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值