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

文章目录

  • 前言
  • 一、索引
    • 1. 整数索引
    • 2. 花式索引
    • 3. 布尔索引
  • 二、数组切片
    • 1. 一维数组的切片
    • 2. 二维数组的切片
  • 总结


前言

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


一、索引

1. 整数索引

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

下标 [0] [1] [2] [3] [4] [5]
数值 10 20 30 40 50 60

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

行/列号 [0]列 [1]列 [2]列
[0]行 1 2 3
[1]行 4 5 6
[2]行 7 8 9

如果索引中只有一个数[a],代表的是取行号为a的一整行
如果索引中有两个数[a,b],代表的是取行号为a、列号为b的这个元素
Python数据分析入门补充知识——numpy中的索引和切片_第1张图片

2. 花式索引

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

这里,二维数组应用花式索引要特别注意以下两种表述方式:
Python数据分析入门补充知识——numpy中的索引和切片_第2张图片

3. 布尔索引

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

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中的运行结果如下:
Python数据分析入门补充知识——numpy中的索引和切片_第4张图片

二、数组切片

1. 一维数组的切片

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

下标 [0] [1] [2] [3] [4] [5]
数值 10 20 30 40 50 60

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

用法 范围 示例 结果 图示
[a:b] 下标[a,b)左闭右开 array_1d[1:3] [20 30] Python数据分析入门补充知识——numpy中的索引和切片_第5张图片
[:b] 若b>0,取前b个元素 array_1d[:3] [10 20 30] Python数据分析入门补充知识——numpy中的索引和切片_第6张图片
[:-b] 若冒号后是个负数,则代表去掉最后b个元素 array_1d[:-2] [10 20 30 40] Python数据分析入门补充知识——numpy中的索引和切片_第7张图片
[:] 所有元素 array_1d[:] [10 20 30 40 50 60] Python数据分析入门补充知识——numpy中的索引和切片_第8张图片
[::c] 从开头到结尾,步长为2 array_1d[::2] [10 30 50] Python数据分析入门补充知识——numpy中的索引和切片_第9张图片

验证代码:

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]行 1 2 3
[1]行 4 5 6
[2]行 7 8 9

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

示例 范围 结果 图示
array_2d[:2] 访问前2行 [[1 2 3]
[4 5 6]]
Python数据分析入门补充知识——numpy中的索引和切片_第10张图片
array_2d[:2, 0:2] 前两行,[0]列和[1]列 [[1 2]
[4 5]]
Python数据分析入门补充知识——numpy中的索引和切片_第11张图片
array_2d[:2,1] 前两行、第二列 [2 5] Python数据分析入门补充知识——numpy中的索引和切片_第12张图片

验证代码:

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数据预处理》

你可能感兴趣的:(Python数据分析入门,python,数据分析,数据挖掘)