iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Numpy布尔索引如何实现
  • 478
分享到

Numpy布尔索引如何实现

2023-07-05 16:07:23 478人浏览 八月长安
摘要

本篇内容介绍了“Numpy布尔索引如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!布尔数据:只有两种值,即真(True)或假(Fals

本篇内容介绍了“Numpy布尔索引如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

布尔数据:只有两种值,即真(True)或假(False),如果我们将某些变量说明为布尔型,那么这些变量即为布尔变量只能存储布尔值(True,False)

定义大数据2003班‘学生’及‘考试成绩’,并且打印其结果

import numpy as np names = np.array(['Bob','lilin','jonse','Andy'])score = np.array([['65','85','95'],['66','76','86'],['97','87','77'],['91','81','71']])print(names,'\n',score)

Numpy布尔索引如何实现

每个人名和其数组之间是相互对应关系,我们通过学生名称来索引学生成绩

names = np.array(['Bob','lilin','jonse','Andy'])score = np.array([['65','85','95'],['66','76','86'],['97','87','77'],['91','81','71']])lilin_score = score[names == 'lilin']print(lilin_score)

Numpy布尔索引如何实现

注意,此做法隐藏着一个前提:定义的布尔值数组的长度必须和 数组轴索引长度(行数)一致,否则报错

例如:大数据3班 KungFu_DraGon 同学没有成绩,也就是说,大数据3班有6个人,只有5个人有成绩,成员和成绩之间不匹配。

names = np.array(['Bob','lilin','jonse','Andy','KungFu_Dragon'])score = np.array([['65','85','95'],['66','76','86'],['97','87','77'],['91','81','71']])lilin_score = score[names == 'KungFu_Dragon']print(lilin_score)

IndexError: boolean index did not match indexed array along dimension 0; dimension is 4 but corresponding boolean dimension is 5

除去上述操作之外,我们还可以通过布尔索引 和 切片 或 整数值 的 序列混合使用 和 匹配

布尔索引和切片操作混合使用

Andy_scores = score[names == 'Andy']Andy_score = score[names == 'Andy',1:3]

布尔索引和整数序列操作混合使用

Andy_scores = score[names == 'Andy']Andy_score = score[names == 'Andy',2]

Numpy布尔索引如何实现

我之前已经提到过,在Python基础中索引和切片的关系,

通过元素数量来看:索引:取一个值,切片:可以取多个值

元素类型而言:索引获得的是字符串,切片获得的是列表,有的时候索引和切片获得都是同一个元素,但是他们的数据类型是不同的。

与基本的数学比较类似,数组中也有类似的比较操作,但是在的比较操作中,会产生True 和 False 的布尔值

下面我对两个数组之间进行了比较

import numpy as nparr = np.random.randn(4,3)arr2 = np.random.rand(4,3)print(arr)print('----------------')print(arr2)arr == arr2

Numpy布尔索引如何实现

说简单了,其实就是每一个对应位置的元素之间进行比较 如果相同给出 True 如果不同,给出False

例如: arr 数组中 “-0.42689989”的下标为(0,0)arr2数组中“0.77641881”的下标为(0,0),我认为它们之间,会通过这样一个比较方法,arr 和arr2 都是二维数组,而且它们数组长度都是一致的,但是他们不是这样进行比较的,arr 第一个元素和 arr2 第一个元素进行比较,arr2第二个元素,和 arr2 第二个元素比较。它的比较方式是,假如 arr数组中第一个元素为 2,如果要将 arr 和 arr2 进行比较,它会在arr2中寻找一个元素值为2 的数字,如果存在给出Ture 否则为False

在numpy中我们来看看一下他们是什么数据类型 ,通过type(变量名)来查看数据类型

Numpy布尔索引如何实现

由此可见,在numpy中,切片和 整数序列索引的数据类型是一致的,都是多维数组(ndarray)

在上述的基础上,我们还可以在条件表达式前使用 ‘~’,做取反操作,比如:

Numpy布尔索引如何实现

我通过python打印了除去 大数据3班学生,‘Andy’以外的所有成员成绩。

除去给了上述取反操作 “~”外还有一种 方法,‘’!=‘’

arr = np.array([[1,4,7],[2,5,8],[3,5,9]])# arr2 = np.array[1,2,3]       builtin_function_or_method'对象不可下标arr2 = np.array([1,5,3])print(arr)print(arr2)print('----------------')a = arr != arr2print(a)

我疑惑的是为什么他们给出了布尔值请仔细观察我用相同颜色框起来的值。

本来相同应该是 Ture ,不同应该用 False ,但因我用了取反操作,所以相同的成为了False 不同的用了ture。

Numpy布尔索引如何实现

“Numpy布尔索引如何实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Numpy布尔索引如何实现

本文链接: https://www.lsjlt.com/news/353531.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++ 生态系统中流行库和框架的贡献指南
    作为 c++++ 开发人员,通过遵循以下步骤即可为流行库和框架做出贡献:选择一个项目并熟悉其代码库。在 issue 跟踪器中寻找适合初学者的问题。创建一个新分支,实现修复并添加测试。提交...
    99+
    2024-05-15
    框架 c++ 流行库 git
  • C++ 生态系统中流行库和框架的社区支持情况
    c++++生态系统中流行库和框架的社区支持情况:boost:活跃的社区提供广泛的文档、教程和讨论区,确保持续的维护和更新。qt:庞大的社区提供丰富的文档、示例和论坛,积极参与开发和维护。...
    99+
    2024-05-15
    生态系统 社区支持 c++ overflow 标准库
  • c++中if elseif使用规则
    c++ 中 if-else if 语句的使用规则为:语法:if (条件1) { // 执行代码块 1} else if (条件 2) { // 执行代码块 2}// ...else ...
    99+
    2024-05-15
    c++
  • c++中的继承怎么写
    继承是一种允许类从现有类派生并访问其成员的强大机制。在 c++ 中,继承类型包括:单继承:一个子类从一个基类继承。多继承:一个子类从多个基类继承。层次继承:多个子类从同一个基类继承。多层...
    99+
    2024-05-15
    c++
  • c++中如何使用类和对象掌握目标
    在 c++ 中创建类和对象:使用 class 关键字定义类,包含数据成员和方法。使用对象名称和类名称创建对象。访问权限包括:公有、受保护和私有。数据成员是类的变量,每个对象拥有自己的副本...
    99+
    2024-05-15
    c++
  • c++中优先级是什么意思
    c++ 中的优先级规则:优先级高的操作符先执行,相同优先级的从左到右执行,括号可改变执行顺序。操作符优先级表包含从最高到最低的优先级列表,其中赋值运算符具有最低优先级。通过了解优先级,可...
    99+
    2024-05-15
    c++
  • c++中a+是什么意思
    c++ 中的 a+ 运算符表示自增运算符,用于将变量递增 1 并将结果存储在同一变量中。语法为 a++,用法包括循环和计数器。它可与后置递增运算符 ++a 交换使用,后者在表达式求值后递...
    99+
    2024-05-15
    c++
  • c++中a.b什么意思
    c++kquote>“a.b”表示对象“a”的成员“b”,用于访问对象成员,可用“对象名.成员名”的语法。它还可以用于访问嵌套成员,如“对象名.嵌套成员名.成员名”的语法。 c++...
    99+
    2024-05-15
    c++
  • C++ 并发编程库的优缺点
    c++++ 提供了多种并发编程库,满足不同场景下的需求。线程库 (std::thread) 易于使用但开销大;异步库 (std::async) 可异步执行任务,但 api 复杂;协程库 ...
    99+
    2024-05-15
    c++ 并发编程
  • 如何在 Golang 中备份数据库?
    在 golang 中备份数据库对于保护数据至关重要。可以使用标准库中的 database/sql 包,或第三方包如 github.com/go-sql-driver/mysql。具体步骤...
    99+
    2024-05-15
    golang 数据库备份 mysql git 标准库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作