Numpy之布尔索引的实现

 更新时间:2023年03月27日 10:25:08   作者:算力鬼才信  
本文主要介绍了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)

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

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)

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

例如:大数据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]

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

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

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

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

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

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

说简单了,其实就是每一个对应位置的元素之间进行比较 如果相同给出 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中,切片和 整数序列索引的数据类型是一致的,都是多维数组(ndarray)

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

我通过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 != arr2
print(a)

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

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

到此这篇关于Numpy之布尔索引的实现的文章就介绍到这了,更多相关Numpy 布尔索引内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • Python中decimal.Decimal类型和float类型的比较

    Python中decimal.Decimal类型和float类型的比较

    这篇文章主要介绍了Python中decimal.Decimal类型和float类型的比较,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 一文解密Python函数的实现原理

    一文解密Python函数的实现原理

    函数是任何一门编程语言都具备的基本元素,它可以将多个要执行的操作组合起来,一个函数代表了一系列的操作。那就来看看Python函数的实现原理吧
    2023-03-03
  • opencv实现简单人脸识别

    opencv实现简单人脸识别

    这篇文章主要为大家详细介绍了opencv实现简单人脸识别,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • python3文件复制、延迟文件复制任务的实现方法

    python3文件复制、延迟文件复制任务的实现方法

    这篇文章主要给大家介绍了关于python3文件复制、延迟文件复制任务的实现方法,文中通过示例代码介绍的非常详细,对大家学习或者使用python3具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • 如何Python使用设置word的页边距

    如何Python使用设置word的页边距

    在编写或处理Word文档的过程中,页边距是一个不可忽视的排版要素,本文将介绍如何使用Python设置Word文档中各个节的页边距,需要的可以参考下
    2025-05-05
  • Tensorflow加载与预处理数据详解实现方法

    Tensorflow加载与预处理数据详解实现方法

    读取大型数据集并对其进行有效预处理可能对其他深度学习库来说很难实现,但是TensorFlow借助Data API很容易实现:只需创建一个数据集对象,并告诉它如何从何处获取数据以及如何对其进行转换
    2022-11-11
  • Python3读取和写入excel表格数据的示例代码

    Python3读取和写入excel表格数据的示例代码

    这篇文章主要介绍了Python3读取和写入excel表格数据的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 详解Python静态网页爬取获取高清壁纸

    详解Python静态网页爬取获取高清壁纸

    这篇文章主要介绍了Python爬取高清壁纸,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Python 200行代码实现一个滑动验证码过程详解

    Python 200行代码实现一个滑动验证码过程详解

    这篇文章主要介绍了Python 200行代码实现一个滑动验证码过程详解,各种各样的验证码,比较高级的有滑动、点选等样式,看起来好像挺复杂的,但实际上它们的核心原理还是还是很清晰的,本文章大致说明下这些验证码的原理以及带大家实现一个滑动验证码
    2019-07-07
  • 在Python中os.fork()产生子进程的例子

    在Python中os.fork()产生子进程的例子

    今天小编就为大家分享一篇在Python中os.fork()产生子进程的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08

最新评论