NUMPY的切片知识点总结

(小声BB:这应该是关于numpy切片讲的最全的萌新式理解了>"<)
我也是一开始学然后经过很多次的尝试总结出来的一些东西,个人认为还是蛮全的

numpy的分割分为一维二维,这两个东西一开始的时候总是傻傻分不清楚
这里我将根据一维二维的不同分割方法给出我的总结帮助兄弟萌理解,

一维切片

// 一维数组的切片操作
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9])//创建一个初始数组
print(a)
//初始数组会这样显示
   [[1,2,3],
    [4,5,6],
    [7,8,9]]

print(a[:])//这里显示所有行

print(a[1:])//这里的表示显示第1+1行到最后一行的数据,也可以理解成切掉第1行的数据
[[4 5 6]
 [7 8 9]]

print(a[:2])//这里表示显示前2行的数据,也可以理解成切掉第2+1行的数据
[[1 2 3]
 [4 5 6]]

print(a[0:2])//这里表示显示从第0+1行到第2行的数据
[[1 2 3]
 [4 5 6]]
 //如果这里是a[1:2]那么只显示第二行,因为1+1=2
 //如果是一维数组而不是这样的二维数组再用[0:3]这种类型
 //那就表示的是切割第0+1个到第3-1个数据后的数据集
  • List item

##小总结:
一维数组只有一个冒号[:]这表示它只对行进行切片
从上面的三个小例子来看我们不难总结出:
冒号左边的是指的从某一行开始同时要加1
而冒号右边的指的是结束的位置同时不需要加1
a[i:y]表示的是从第i+1行到第y行,这里我个人不建议用切掉某一行或者某些行来进行记忆,我个人觉得用显示某些行更好记忆也更好理解!>.<?

二维切片

二维切片是在一维切片的基础上进行提升
理解记忆起来相对于一维是要难些的
毕竟二维的切片有更多不同的情况嘛
// 我们还是用原来那个数组a
arr3d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])[:2, :2]
print('[:2,:2]切片\n', arr3d)
//这里[:2,:2]表示先选取前两行所有数据,再选取前两列的数据
//刚刚在一维切片的时候就说了冒号左右的问题,那么这里同样也满足
[:2,:2]切片
 [[1 2]
 [4 5]]
 
arr4d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])[:2, :2]
print('[1:,1:]切片\n', arr4d)
//这里[1:,1:]表示显示从第1+1行到最后一行的全部数据,再选取从第1+1列的部分
//同样满足一维中的冒号左右定律
[[5 6]
 [8 9]]

arr5d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])[:2, 2]
print('[:2,2]切片\n', arr5d)
//这里表示先选取前2行数据,再选取第2+1列的数据
//这里引申出了一个新的东西即逗号两边可以有任意一边没有冒号
[3 6]

arr6d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])[:2,]
print('[:2,:]切片\n', arr6d)
//这里的[:2,:]表示先选取前2行,然后选取所有列
//这里同样满足一维切片的定律
 [[1 2 3]
 [4 5 6]]

大总结

一维切片和二维切片其实本质上是一样的,只需要牢牢记住那个规律
冒号左加1表示开始,冒号右不变表示选取,冒号左右没数据表示全选
对于二维切片在一维切片的基础上,加上一句话
没有冒号表示指定位置并加1,逗号左边表示行右边表示列
最后给大家一张汇总所有情况的表,忘记的时候可以看看,平时多练习练习就理解了(可能会有一点儿点儿错误,大家主要是记住那)

一维总结:

[:]:选取所有行
[a:]:从第a+1行开始到最后一行
[:a]:取前a行的元素
[a:b]:保留第a个元素,从第a+1到第b的元素都删除
[::a]:相隔a个数的元素
[a::b]:从第a+1个相隔b个数取
[a:,b:]:从第a+1个取到第b个数

二维总结:

[a:b,:]:连续切片从a+1~b行
[a:,:]:连续切片从a+1到最后一行
[:a,b:]:取前a排,从第b+1列开始到最后一列
[:a,b]:取前a排,第b+1列
[:a,:b]:前a行,前b列
[:,a]:选取所有行,第a+1列
[:,:a]:所有行,从第一列到第a列
[:,[a,b]]:所有行,第a+1和第b+1列

切片是一个非常基础的操作,是后期数据处理方面最基本的操作,在你不会用loc或者iloc的时候或者比较小的数据组时就可以用这种数字切片,当然,切片操作部只能用作数据集的操作,同样能切片字符串类型,最典型的例子就是你想处理一个时间数据,你只想得到他的年份月份,这个时候切片操作就很好用啦!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值