加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Numpy 高级索引

发布时间:2023-07-03 09:18:22 所属栏目:教程 来源:
导读:Numpy 比一般的 Python 序列提供更多的索引方式。除了前面章节介绍的用整数和切片的索引外,本节深入介绍布尔型索引和花式索引。

比较运算符与布尔型数组
在实际使用中,可以通过比较运算符来产生一个布尔型数组
Numpy 比一般的 Python 序列提供更多的索引方式。除了前面章节介绍的用整数和切片的索引外,本节深入介绍布尔型索引和花式索引。

比较运算符与布尔型数组
在实际使用中,可以通过比较运算符来产生一个布尔型数组。

案例
利用random模块产生一个大小为7×4的随机数数组:

data = np.random.randn(,)data
out:array([[-, -,  , -],   [ , -, -,  ],   [- , -, -, -],   [-,  ,   ,  ],   [-, -  , -,  ],   [-,  ,  ,  ],   [-, -,  , -]])
定义一个名称数组,长度为7,并假设上述data中的每一行与名称数组中的名字一一对应。

names = np.array(['Ben','Tom','Ben','Jeremy','Jeremy','Tom','Ben'])names
out:array(['Ben', 'Tom', 'Ben', 'Jeremy', 'Jeremy', 'Tom', 'Ben'], dtype='<U6')
对data数组,通过传入一个比较运算符,可以与全部元素逐一比较:

data > out:array([[False, False,  True, False],   [ True, False, False,  True],   [False, False, False, False],   [False,  True,  True,  True],   [False, False, False,  True],   [False,  True,  True,  True],   [False, False,  True, False]])
对同样大小的布尔型数组,可以利用&(和)、|(或)、-(非)进行运算。

例如对data进行-1~1之间的判断:

(data>-) & (data < )out:array([[ True,  True,  True,  True],   [ True,  True, False,  True],   [ True,  True,  True, False],   [ True, False, False,  True],   [ True, False,  True,  True],   [False, False, False,  True],   [ True,  True,  True,  True]])

比较运算符与布尔型索引
先利用比较运算符创建布尔型数组,再利用布尔型索引的功能,可以快速进行筛选。

案例
names中的每一个名字,和data的每一行是一一对应的关系。因此可以快速地选择出Ben的相关信息:

data[names=='Ben']out:array([[-, -,  , -],   [- , -, -, -],   [-, -,  , -]])
利用‘&’运算符,一次性选择出Ben和Tom的相关信息

data[(names=='Ben') | (names=='Tom')]out:array([[-, -,  , -],   [ , -, -,  ],   [- , -, -, -],   [-,  ,  ,  ],   [-, -,  , -]])
布尔型数组也可以和切片、整数索引混合使用:

array([[-, -],   [ , -],   [- , -],   [-,  ],   [-, -]])
特别地,也可以利用data本身,快速选择出大于0的元素:

data[data > ]out:array([, , , ,  ,   , , , , ,   ])
这里选择的结果是以一维数组的形式返回的。

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章