Nmupy split( )函数的理解与运用(初学者笔记)

np.split(ary, indices_or_sections, axis=0)

先来看看jupyter中对split函数的介绍:

 

 

基于以上,我对这个函数的理解总结如下:

1.np.split可以看做的np.concatenate的逆向,是为了把一个数组切割成一些子数组;

2.对于参数ary,是指需要分割的数组;

3.“indives_or_sections”我把他理解为分割点(split points),这个参数指定了要将原数组按照哪些节点来分割,他有两种形态,一种是一个单独的整数,即int,一种是由从小到大有序排列的整数组成的一纬数组,是用中括号括起来的一个数组。

(1)当该参数是int形式时:

假设int=n,函数会把原数组等分地切成n个子数组,如果原数组不能被等分地切开,那么就会报错,可以看到以下例子:

 x数组里有8个元素,所以当这里的int=2时,x数组被等分地切成2个子数组,每个子数组里有4个元素;而y数组里也有8个元素,但是这里的int=3,8个元素不能被等分为3份,所以这里raise error。

(2)当该参数是由从小到大有序排列的整数组成的一纬数组时:

我们可以将这个一维数组的每一个元素当做切割点(这是给我自己的理解定义的一个名词,目前我还没接触过这个词的专有名词,如果这个词存在,那么请不要混淆意思,这里只是一个代称)

一般,如果有 N 个切割点,那么我们会得到 N+1 个子数组。

假如切割点的数组是[a, b, c]的话,那么原数组就会被切割为[:a] , [a:b] , [b:c] 和 [c:]这4个数组,而当切割点超过原数组的length时,会返回空数组,具体来看以下两个例子:

 

 

[3,4,6]的分割点把原数组x分割为[:3], [3:4], [4:6] 和 [6:]这四个子数组;

 

这个例子中, [3,4,10]的分割点把原数组x分割为[:3], [3:4], [4:10] 和 [10:]这四个子数组;因为索引10的位置已经超出了原数组的length,所以这里返回了一个空数组。

这里,我对找切割点有一个自己的小办法,对我个人来说会比一个一个写出来更方便快捷:

原数组第一个元素和第二个元素中间的空格,我把他定义为切割点1,之后依次进行,作为参数的一维数组中的数字依次对应切割点的数标,然后在需要切割的地方直接切割即可,还用上面的例子举例:

 

 

 

 

以上是一维数组的切割情况,二维及以上的数组切割同理,如果需要进一步的操作,就要用到函数的第三个参数:axis

4.axis:默认值为0,纵向操作数组,可以用np.vsplit()函数代替(方向为from up to down);当axis=1时,横向操作数组,可以用np.hsplit()函数代替(方向为from left to right),除axis外,其他部分高维数组的操作同一维数组,具体可以看下面的例子理解:

 

以上是作为小白学习np.split()时的一些学习感悟,欢迎各位大佬批评指正,也希望有更多朋友一起交流~

最后,撒花纪念本人的第一篇帖子完成~~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值