pandas的axis参数理解与Numpy中的axis参数理解

pandas中简单的二维矩阵

  • axis=0或者“index” :
    如果是单行操作,就指的是某一行
    如果是聚合操作,指的是跨行cross rows
  • axis=1或者“columns”
    如果是单列操作,就指的是某一列
    如果是聚合操作,指的是跨列cross columns
    在这里插入图片描述
    按哪个axis,就是这个axis要动起来(类似被for循环遍历),其他的axis保持不动
    在二位矩阵中将axis=0理解成行,axis=1理解成列是没有问题的,但是在多维度矩阵中就比较难以理解,接下来会介绍多维矩阵中的理解方法
    先看例子:首先是生成测试数据,数据为0-11的三行四列的二维矩阵,列名为A,B,C,D
df = pd.DataFrame(np.arange(12).reshape(3,4),columns=["A","B","C","D"])
df

#结果:
	A	B	C	D
0	0	1	2	3
1	4	5	6	7
2	8	9	10	11

进行单行删除操作(axis = 0) 需要指定行索引

print(df.drop(0,axis=0))

#结果:
   A  B   C   D
1  4  5   6   7
2  8  9  10  11

进行跨行求均值聚合操作(axis = 0) ,就是跨行操作,axis = 0在动,其他的axis不动,得到的实际就是每一列均值

print(df.mean(axis=0))

#结果:
A    4.0
B    5.0
C    6.0
D    7.0
dtype: float64

进行单列删除操作(axis = 1) 需要指定列名

print(df.drop(['A'],axis=1))

#结果:
   B   C   D
0  1   2   3
1  5   6   7
2  9  10  11

进行跨列求均值聚合操作(axis = 1) ,就是跨列操作,axis = 1在动,其他的axis不动,得到的实际就是每一行均值

print(df.mean(axis=1))

#结果:
0    1.5
1    5.5
2    9.5
dtype: float64

Numpy中的多维矩阵(建议二维也参照这个理解)

在多维矩阵中就不能把axis=0理解成行,axis=1,理解成列了,要将axis理解成轴更合理,有个不变的规则是,axis=0,永远指的是narray最外层的括号,axis=1是第二个括号,axis=2是第三个括号,以此类推。
代码分析验证:生成数据,数据是0-23的,矩阵形状是(2,3,4)

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

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

其中reshape(2,3,4) ,维度2代表的是最外层括号,即axis=0 ,维度3即axis=1,维度4即axis=2
假设我们取均值 要拿掉维度2(axis=0),按照上面的理解我们拿掉的是最外层的括号,得到的维度应该是3*4

print (data.mean(axis=0))
#结果:
[[ 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]求平均的结果
假设要消灭的维度为3,axis=1,参与计算的元素是3个,最后的结果是2*4。

print (data.mean(axis=1))
#结果:
[[ 4.  5.  6.  7.]
 [16. 17. 18. 19.]]

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值