NumPy(5)array的合并与分割

本文介绍如何使用NumPy进行array的合并与分割。内容包括vstack、hstack、concatenate以及newaxis函数的应用,展示了如何通过axis参数控制合并方向。此外,还讨论了array的分割操作,重点讲解了split函数的使用和axis概念的理解。
摘要由CSDN通过智能技术生成

今天是2017年9月20号,4年前的今天,我开始了一段奇妙的旅程。I love you,honey

继续Numpy的话题,在前4期中讲了使用Numpy进行创建array,然后进行一些数学运算、基本操作之后,今天来看array的合并与分割。

合并:

Numpy中使用vstack, hstack, newaxis, concatenate进行相关操作。接下来看一些例子:

vstack


从上图中可以看出vstack需要的输入是一个元组,因此我用元组的形式将需要合并的两个array输入进去。vstack看名字就可以知道他是垂直合并,因此结果如下边两图:

hstack

和vstack一样,hstack也很好理解了。

concatenate


concatenate通过axis这个参数来控制横向或者竖向合并,当axis=0时,表示的是竖向合并。

axis=1就是横向合并。

newaxis

看前边的内容,不知道你们有没有发现什么,在stack和concatenate两个的截图中,A和B两个array的定义有所不同。可以返回去看一下。
原因是之前[1 2 3]这样的定义,它的shape是(3,)而不是(1, 3),可以认为它只是一个list而已,而不是我们所能操作的array。
为了把它变成array,在[1 2 3]基础上,我们可以做的是给它增加维度。newaxis这个函数的字面意思就是新的轴,就是新增加一个维度。接下来看看怎么用:

具体是怎么回事呢,可以这样理解(以下理解不是官方解释,是我个人的想法,可能不对,但是很好记):
A[]就是我要对A进行操作,具体操作被,分成了两个部分,在,之前我们使用了newaxis,,之后是一个::可以看做是原有的shape不变,我们在原有的shape之前加了一个新轴。原来是(3,),在3之前加一轴,就变成了(1, 3),结果如下:

果然变成了(1,3)的array。
同理,如果写的是A[:,np.newaxis],结果就会输出(3,1)的array。


分割:

numpy使用split进行array的分割,需要输入三个参数,第一个是需要分割的array,第二个是分割的块数,第三个是按哪个轴进行分割。
注意这个分割是平均分,如果这个array有6行,分成2块3块都可以,但是分成4块就会报错。如果需要这种不平均的分割,需要使用的是np.array_split函数来操作。
轴这个参数和上边讲的一样,为0时按照列的方向来分,为1时按照行的方向来分。

如果无法分清axis,我个人觉得axis是个很难理解的概念。。。
可以用np.vsplitnp.hsplit来分别代替axis=0和axis=1的np.split

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值