第3关:花式索引与布尔索引
任务描述
本关任务:根据本关所学知识,过滤大写字母。
相关知识
为了完成本关任务,你需要掌握:
- 花式索引;
- 布尔索引。
花式索引
花式索引(Fancy Indexing)是NumPy用来描述使用整型数组**(这里的数组,可以是NumPy的数组,也可以是python自带的list)**作为索引的术语,其意义是根据索引数组的值作为目标数组的某个轴的下标来取值。
使用一维整型数组作为索引,如果被索引数组(ndarray)是一维数组,那么索引的结果就是对应位置的元素;如果被索引数组(ndarray)是二维数组,那么就是对应下标的行。如下图所示:
示例代码如下:
import numpy as np
arr = np.array(['zero','one','two','three','four'])
'''
打印arr中索引为1和4的元素
结果为:['one', 'four']
'''
print(arr[[1,4]])
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
'''
打印arr中索引为1和0的行
结果为:[[4, 5, 6], [1, 2, 3]]
'''
print(arr[[1, 0]])
'''
打印arr中第2行第1列与第3行第2列的元素
结果为:[4, 8]
'''
print(arr[[1, 2], [0, 1]])
布尔索引
我们可以通过一个布尔数组来索引目标数组,以此找出与布尔数组中值为True的对应的目标数组中的数据,从而达到筛选出想要的数据的功能。如下图所示:(PS:需要注意的是,布尔数组的长度必须与被索引数组对应的轴的长度一致)
不过单纯的传入布尔数组进去有点蠢,有没有更加优雅的方式使用布尔索引来达到筛选数据的效果呢?
当然有!我们可以想办法根据我们的需求,构造出布尔数组,然后再通过布尔索引来实现筛选数据的功能。
假设有公司员工绩效指数的数据如下(用一个一维的ndarray表示),现在想要把绩效指数大于3.5的筛选出来进行股权激励。
那首先就要构造出布尔数组,构造布尔数组很简单,performance > 3.5即可。此时会生成想要的布尔数组。
有了布尔数组就可以使用布尔索引来实现筛选数据的功能了。
示例代码如下:
import numpy as np
performance = np.array([3.25, 3.5, 3.75, 3.5, 3.25, 3.75])
'''
筛选出绩效高于3.5的数据
结果为:[3.75, 3.75]
'''
print(performance[performance > 3.5])
'''
筛选出绩效高于3.25并且低于4的数据
注意:&表示并且的意思,可以看成是and。&左右两边必须加上()
结果为:[3.5 3.75 3.5 3.75]
'''
print(performance[(performance > 3.25) & (performance < 4)])
编程要求
请在右侧编辑器Begin-End处补充代码,根据函数参数input_data过滤出所有的大写字母。
- 具体要求请参见后续测试样例。
请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
测试输入:
[“d”,“a”,“A”,“p”,“b”,“I”,“C”,“K”]
预期输出:
[‘A’ ‘I’ ‘C’ ‘K’]*
import numpy as npdef student(input_data):result=[]#********* Begin *********#a = np.array(input_data)#将输入数据array化result = a[(a>="A")&(a<="Z")]#使用布尔逻辑和布尔索引# ********* End *********#return result
第3关:花式索引与布尔索引相关推荐
- python获取数组中大于某一阈值的那些索引值_Python NumPy 高级索引——整数组索引、布尔索引及花式索引...
NumPy 除了之前文章中介绍的用整数和切片的索引外,数组还可以由整数数组索引.布尔索引及花式索引. 整数数组索引 整数索引有助于基于 N 维索引来获取数组中任意元素.每个整数数组表示该维度的下标值. ...
- A01_[NumPy中文网]数组基础(创建数组,多维数组切片,数组属性)、使用数组(基本操作符,数组特殊运算符)、索引(花式索引,布尔索引,缺省索引)
NumPy简单入门教程 NumPy是Python中的一个运算速度非常快的一个数学库,它非常重视数组.它允许你在Python中进行向量和矩阵计算,并且由于许多底层函数实际上是用C编写的,因此你可以体验在 ...
- python中索引和下标_Series下标索引、标签索引、切片索引、布尔索引
Series的values属性可以获取值,Series的索引也可以获取值且更加灵活.Series是dict-like类型,也是list-like类型,可以模仿字典和列表获取数据,比如可以用get方法获 ...
- B07_NumPy 高级索引(整数数组索引,布尔索引,花式索引)
NumPy高级索引 NumPy 比一般的 Python 序列提供更多的索引方式.除了之前看到的用整数和切片的索引外,数组可以由整数数组索引.布尔索引及花式索引. 整数数组索引 以下实例获取数组中(0, ...
- Python中布尔索引的使用
import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline 展示表格基本信息 # ...
- pandas中series一维数组的创建、索引的更改+索引切片和布尔索引+dataframe二维数组的创建、基本属性、索引方法(传统方法和lociloc)、nan操作、排序+案例
目录 一.为什么要学习pandas? 二.pandas的常用数据类型 1.series--一维的且带标签的数组 (1)创建一维数组 (2)通过列表形式创建的series带标签数组可以改变索引,传入索引 ...
- pandas布尔索引
说明:记录阅读代码过程中的布尔索引 布尔索引 data = [['Tom', 86], ['Bob', 80], ['Lily', 90], ['Mike', 97]] df = pd.DataFra ...
- 03_pandas布尔索引、isin()筛选、设置值at和iat,loc,reindex、dropna、fillna,isna、求平均值mean、Apply函数、value_counts
布尔索引 案例1 import numpy as np import pandas as pd# 通过设置开始时间,并设置间隔了多少月 dates = pd.date_range('20130101' ...
- pandas 学习 —— 逻辑表达式与布尔索引
>> df = pd.DataFrame(np.random.randint(0, 10, (5, 4)), columns=list('ABCD'))A B C D 0 0 4 8 4 ...
最新文章
- linux 替换内核 img,查看更改linux内核initrd.img-Go语言中文社区
- 【MM模块】 Classification 分类系统
- Angular里的RouterOutlet指令学习笔记
- 湖南工业职业技术学院计算机协会,计算机网络协会
- 使用React Native和Spring Boot构建一个移动应用
- mysql 判断是数据类型_mysql数据类型判断
- VS C# 删除数组中的一个或多个元素
- Python 算法交易实验30 退而结网7-交易策略思考
- VAR模型分析联合内生变量的动态关系
- UWB定位/RSSI定位 三边测量法trilateration C语言代码详解
- Google高级搜索命令
- Alink(1):Alink概述
- 神经网络中的filter (滤波器)与kernel(内核)的概念
- 完美世界(完美世界(北京)网络技术有限公司)
- H5首屏图片加载优化
- i7 8700+b360m+rx590黑苹果配置如何
- C: Warning: implicit declaration of function ‘e‘; did you mean ‘el‘?[-Wimplicit-function-declaration
- 林书豪028-三人的回应
- MARKdown语法与文字高亮
- 基于Python进行人脸验证人脸识别综合开发