Python中对于axis参数的一种理解方式(以后再也不用度娘axis了)

引言

在使用Python语言进行数据分析和机器学习的时候,常常需要对类似pd.core.frame.DataFrame或者np.ndarray的对象进行操作.

在二维情况下,例如对于ndim=1的np.ndarray,我们需要对其进行纵向堆叠.我们可以使用vstack()函数(v是vertical之意,同理,水平方向堆叠就是用hstack()).

但如果用stack()函数呢?axis的参数是0还是1呢?

样例

以numpy.ndarray为例子:

narr = np.arange(6).reshape(2,3)
# array([[0, 1, 2],
#        [3, 4, 5]])
# 例1
np.stack([narr, narr], axis=0)
# array([[[0, 1, 2],
#         [3, 4, 5]],
#        [[0, 1, 2],
#         [3, 4, 5]]])
# 例2
np.max(narr, axis=0)
# array([3, 4, 5])
# 例3
np.sum(narr, axis=1)
# array([ 3, 12])

解析

从方括号向内看,一层一层打开方括号.方括号由外向内,对应"维"的序号就是0,1,2,…,n.

axis参数的数值,就对应了我们准备破开哪个维度.请看例1,我们选择"破开"axis=0,即最外层的维度.那么我们就不能伤及里面的维度,所以我们是将narr的外层破开之后将内层的维度进行了堆叠.

例2和例3也类似,分别把第0和第1个维度给"破开"了.

一下还有一个简单的例子帮助理解:

h_arr = np.arange(24).reshape(2, 3, 4)
# 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]]])
np.median(h_arr, axis=1).shape
# (2, 4)

可以直观看到,axis所指的那个维度被"干掉了".

结语

以上就是对axis的一个理解,不过pandas的数据结构还没在本文中设计,等有空再来填坑,先拜拜了~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值