Python数据分析入门补充知识——numpy中的索引和切片

本文详细介绍了NumPy数组的索引和切片操作,包括整数索引、花式索引和布尔索引在一维和二维数组中的应用。通过实例展示了如何选取特定元素、行或列,并探讨了切片的各种用法,如步长和负索引。文章还提到了布尔索引在数据筛选中的作用,以及切片在数据访问中的灵活性。
摘要由CSDN通过智能技术生成


前言

索引和切片是数据分析的基础,今天先学习一下numpy中的索引和切片用法。


一、索引

1. 整数索引

(1)一维数组
假设有一个一维数组array_1d

下标[0][1][2][3][4][5]
数值102030405060

那么,array_1d[3]取的就是下标为3的数字40,即数组中的第四个数。
这里要注意,数组的下标都是从0开始的
(2)二维数组
假设有一个二维数组array_2d

行/列号[0]列[1]列[2]列
[0]行123
[1]行456
[2]行789

如果索引中只有一个数[a],代表的是取行号为a的一整行
如果索引中有两个数[a,b],代表的是取行号为a、列号为b的这个元素
在这里插入图片描述

2. 花式索引

(1)对一维数组来说,使用花式索引可以获取该数组的多个元素。
(2)对二维数组来说,可以使用花式索引获取该数组的多行元素。

这里,二维数组应用花式索引要特别注意以下两种表述方式:
在这里插入图片描述

3. 布尔索引

打个比方,有一组成绩数据,要从中筛选出60分以下的数据,就需要用到布尔索引。
布尔可以简单理解为真和假,符合条件为真,即True,不符合条件为假,即False。
使用布尔索引访问时,会先生成一个外观长得几乎一模一样的数组,区别就是数组中存放的是原来那个数字的判断结果,再按布尔值取到判断结果为True的数值,如下图所示:
在这里插入图片描述

array_2d=np.arrange(1,10).reshape((3,3))
print(array_2d)
print("-----------")
# 使用布尔索引访问元素
print(array_2d>5)
print("--------------")
print(array_2d[array_2d>5])

在jupyter notebook中的运行结果如下:
在这里插入图片描述

二、数组切片

1. 一维数组的切片

Numpy中支持使用切片访问数组的元素。
假设有一个一维数组array_1d
千万注意数组的下标都是从0开始,那么这6个数值对应的就是下标0到5。

下标[0][1][2][3][4][5]
数值102030405060

下面演示不同切片方式及结果:

用法范围示例结果图示
[a:b]下标[a,b)左闭右开array_1d[1:3][20 30]在这里插入图片描述
[:b]若b>0,取前b个元素array_1d[:3][10 20 30]在这里插入图片描述
[:-b]若冒号后是个负数,则代表去掉最后b个元素array_1d[:-2][10 20 30 40]在这里插入图片描述
[:]所有元素array_1d[:][10 20 30 40 50 60]在这里插入图片描述
[::c]从开头到结尾,步长为2array_1d[::2][10 30 50]在这里插入图片描述

验证代码:

import numpy as np
array_1d=np.array([10,20,30,40,50,60])
print(array_1d[1:3])	#访问索引为1、2的元素
print(array_1d[:3])		#访问前3个元素
print(array_1d[:-1])	#访问除末尾元素之外的元素
print(array_1d[:])		#访问全部元素
print(array_1d[::2])	#访问从刚开头到末尾、步长为2的元素

2. 二维数组的切片

与一维数组相比,二维数组支持更多的切片操作。
假设有一个二维数组array_2d

行/列号[0]列[1]列[2]列
[0]行123
[1]行456
[2]行789

下面演示不同切片方式及结果:

示例范围结果图示
array_2d[:2]访问前2行[[1 2 3]
[4 5 6]]
在这里插入图片描述
array_2d[:2, 0:2]前两行,[0]列和[1]列[[1 2]
[4 5]]
在这里插入图片描述
array_2d[:2,1]前两行、第二列[2 5]在这里插入图片描述

验证代码:

import numpy as np
array_2d=np.array([[1,2,3],[4,5,6],[7,8,9]])	#创建二维数组
print(array_2d)
print('-------')
print(array_2d[:2])			#使用切片访问前两行的元素
print(array_2d[:2,0:2])		#使用切片访问前两行、第一列和第二列的元素
print(array_2d[:2,1])		#使用切片访问前两行、第二列的元素


总结

Series和DateFrame中的索引和切片用法与本文类似,还在探索中。。。

参考资料:人民邮电出版社,黑马程序员主编的《Python数据预处理》

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值