Numpy-4-布尔型索引、集合运算和排序

【Python】Numpy基础:数组和矢量运算 Numpy(Numerical Python)是高性能科学计算和数据分析的基础包,它是几乎所有数据分析高级工具的构建基础。 阅读详情

在这里插入图片描述

布尔型索引、集合运算和排序

到目前为止,我们了解了如何使用索引进行切片以及选择 ndarray 元素。当我们知道要选择的元素的确切索引时,这些方法很有用。但是,在很多情况下,我们不知道要选择的元素的索引。例如,假设有一个 10,000 x 10,000 ndarray,其中包含从 1 到 15,000 的随机整数,我们只想选择小于 20 的整数。这时候就要用到布尔型索引,对于布尔型索引,我们将使用逻辑参数(而不是确切的索引)选择元素。我们来看一些示例:

# We create a 5 x 5 ndarray that contains integers from 0 to 24
X = np.arange(25).reshape(5, 5)

# We print X
print()
print('Original X = \n', X)
print()

# We use Boolean indexing to select elements in X:
print('The elements in X that are greater than 10:', X[X > 10])
print('The elements in X that lees than or equal to 7:', X[X <= 7])
print('The elements in X that are between 10 and 17:', X[(X > 10) & (X < 17)])

# We use Boolean indexing to assign the elements that are between 10 and 17 the value of -1
X[(X > 10) & (X < 17)] = -1

# We print X
print()
print('X = \n', X)
print()

Original X =
[[ 0 1 2 3 4]
 [ 5 6 7 8 9]
 [10 11 12 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]]

The elements in X that are greater than 10: [11 12 13 14 15 16 17 18 19 20 21 22 23 24]
The elements in X that lees than or equal to 7: [0 1 2 3 4 5 6 7]
The elements in X that are between 10 and 17: [11 12 13 14 15 16]

X =
[[ 0 1 2 3 4]
 [ 5 6 7 8 9]
 [10 -1 -1 -1 -1]
 [-1 -1 17 18 19]
 [20 21 22 23 24]]

除了布尔型索引之外,NumPy 还允许进行集合运算。可以用来比较 ndarray,例如查找两个 ndarray 中的相同元素。我们来看一些示例:

# We create a rank 1 ndarray
x = np.array([1,2,3,4,5])

# We create a rank 1 ndarray
y = np.array([6,7,2,8,4])

# We print x
print()
print('x = ', x)

# We print y
print()
print('y = ', y)

# We use set operations to compare x and y:
print()
print('The elements that are both in x and y:', np.intersect1d(x,y))
print('The elements that are in x that are not in y:', np.setdiff1d(x,y))
print('All the elements of x and y:',np.union1d(x,y))

x = [1 2 3 4 5]

y = [6 7 2 8 4]

The elements that are both in x and y: [2 4]
The elements that are in x that are not in y: [1 3 5]
All the elements of x and y: [1 2 3 4 5 6 7 8]

我们还可以在 NumPy 中对 ndarray 进行排序。我们将了解如何使用 np.sort() 函数以不同的方式对秩为 1 和 2 的 ndarray 进行排序。和我们之前看到的其他函数一样,sort 函数也可以当做方法使用。但是,对于此函数来说,数据在内存中的存储方式有很大变化。当 np.sort() 当做函数使用时,它不会对ndarray进行就地排序,即不更改被排序的原始 ndarray。但是,如果将 sort 当做方法,ndarray.sort() 会就地排序 ndarray,即原始数组会变成排序后的数组。我们来看一些示例:

# We create an unsorted rank 1 ndarray
x = np.random.randint(1,11,size=(10,))

# We print x
print()
print('Original x = ', x)

# We sort x and print the sorted array using sort as a function.
print()
print('Sorted x (out of place):', np.sort(x))

# When we sort out of place the original array remains intact. To see this we print x again
print()
print('x after sorting:', x)

Original x = [9 6 4 4 9 4 8 4 4 7]

Sorted x (out of place): [4 4 4 4 4 6 7 8 9 9]

x after sorting: [9 6 4 4 9 4 8 4 4 7]

注意,np.sort() 会对数组进行排序,但是如果被排序的 ndarray 具有重复的值,np.sort() 将在排好序的数组中保留这些值。但是,我们可以根据需要,同时使用 sort 函数和 unique 函数仅对 x 中的唯一元素进行排序。我们来看看如何对上述 x 中的唯一元素进行排序:

# We sort x but only keep the unique elements in x
print(np.sort(np.unique(x)))

# We sort x but only keep the unique elements in x
print(np.sort(np.unique(x)))

最后,我们来看看如何将 sort 当做方法,原地对 ndarray 进行排序:

# We create an unsorted rank 1 ndarray
x = np.random.randint(1,11,size=(10,))

# We print x
print()
print('Original x = ', x)

# We sort x and print the sorted array using sort as a method.
x.sort()

# When we sort in place the original array is changed to the sorted array. To see this we print x again
print()
print('x after sorting:', x)

Original x = [9 9 8 1 1 4 3 7 2 8]

x after sorting: [1 1 2 3 4 7 8 8 9 9]

在对秩为 2 的 ndarray 进行排序时,我们需要在 np.sort() 函数中指定是按行排序,还是按列排序。为此,我们可以使用关键字 axis。我们来看一些示例:

# We create an unsorted rank 2 ndarray
X = np.random.randint(1,11,size=(5,5))

# We print X
print()
print('Original X = \n', X)
print()

# We sort the columns of X and print the sorted array
print()
print('X with sorted columns :\n', np.sort(X, axis = 0))

# We sort the rows of X and print the sorted array
print()
print('X with sorted rows :\n', np.sort(X, axis = 1))

Original X =
[[6 1 7 6 3]
  [3 9 8 3 5]
  [6 5 8 9 3]
  [2 1 5 7 7]
  [9 8 1 9 8]]

X with sorted columns :
[[2 1 1 3 3]
  [3 1 5 6 3]
  [6 5 7 7 5]
  [6 8 8 9 7]
  [9 9 8 9 8]]

X with sorted rows :
[[1 3 6 6 7]
  [3 3 5 8 9]
  [3 5 6 8 9]
  [1 2 5 7 7]
  [1 8 8 9 9]]

---------------------------END---------------------------

题外话

感谢你能看到最后,给大家准备了一些福利!

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。


👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img

二、Python兼职渠道推荐*

学的同时助你创收,每天花1-2小时兼职,轻松稿定生活费.
在这里插入图片描述

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

python学习—最全Numpy教程 1. Numpy概述 NumPy(Numerical Python的简称)是Python数值计算最重要的基础包。大多数提供科学计算的包都是用NumPy的数组作为构建基础。 1.1.1. Why NumPy? 1.一个强大的N维数组对象ndarray,具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 2.用于集成由C、C++、Fortran等语言类库的C语言 API 3.线性代数、随机数生成以及傅里叶变换功能。 4.用于对整组数据进行快速运算的标准数学函数(无需编写循环),支持大量的数据运算 5. 阅读详情

相关推荐

window下安装并使用nvm(含卸载node、卸载nvm、全局安装npm)

文章目录一、卸载node二、安装nvm三、配置路径和下载源四、使用nvm安装node五、nvm常用命令六、卸载nvm七、遇到的问题 nvm 全名 node.js version management,顾名思义是一个nodejs的版本管理工具。通过它可以安装和切换不同版本的nodejs。 一、卸载node 如果你已经安装了node,那么你需要先卸载node,如果你没有安装那直接跳过这一步到下一步。 打开控制面板 -> 打开程序和功能 -> 右上角搜索输入node -> 右键卸载 为了确保彻底

HuangsTing的博客 41万+

------布尔索引-----

在使用布尔索引时,首先需要创建一个布尔型数组,其中数组的每个元素都是。现在,我们想要选择所有大于 2 的元素。然后,使用该数组作为索引即可选择数组中对应位置为。布尔索引是指在 numpy 数组中使用布尔值(例如,假设有一个 numpy 数组。)作为索引来选择数组中的元素。3、选择‘False’

m0_62865498的博客 1675

FOC电机控制中电流采样延迟补偿的原理和方法

摘要: FOC电机控制中,电流采样、计算与PWM更新存在固有延迟(约1.5个PWM周期),导致相位滞后,限制电流环带宽。主流补偿方法包括: 一阶前向预测法:基于历史电流值预测未来电流,抵消延迟,工程应用广泛; 相位超前补偿:通过s/z域校正器设计实现等效预测; 状态观测器法(如龙伯格观测器):通过电机模型闭环估计状态,兼具噪声抑制和参数辨识能力,但复杂度高。实际需注意参数敏感性、离散化精度及延迟时间校准,避免过补偿风险。一阶预测法因平衡效果与复杂度成为工业首选。

jifengzhiling的博客 2232

理解 numpy 中的布尔索引

布尔索引是一种通过使用布尔值(True或False)数组来选择数组中的元素的方法。布尔数组的长度必须与源数组相同,它指示了哪些元素应该被选择或过滤。通过使用布尔索引,我们可以根据指定条件来选择数组中的元素,这些条件可以是基于元素值的比较、逻辑运算符的组合或其他布尔表达式。简单来将, 布尔索引就是让 1个 boolean dtype 的adarray 作为另1个adarry 的 filter, 所以 布尔索引更应该是个filter 而不是 index。

nvd11的专栏 2232

跨境TRS投资操作指南与系统解决方案

3 点击【申请 TRS 账户】,查看风险披露,录入账户参数、确定录入的参数信息,进行身份验证,输入验证码,TRS 账户开户申请已提交,后台对已提交的 TRS 开户申请进行审核,审核成功后,短信邮箱提醒,进行登录;2.点击【申请TRS账户】,查看风险披露,录入账户参数、确定录入的参数信息,进行身份验证,输入验证码,TRS账户开户申请已提交,后台对已提交的TRS开户申请进行审核,审核成功后,短信邮箱提醒,进行登录;4)更广泛的投资选择:相比A股通,TRS可以交易更多的A股标的,提供了更广泛的投资选择。

2401_85487119的博客 2852

WorkBench3.2 + VxWorks6.8安装教程

按照FTP连接主机和目标机,将整个VxWorks6.8的安装分为两个部分,一是在主机(win10系统,可以使用虚拟机或者实体机,推荐使用虚拟机)上安装workbench3.2,进行bootrom与VxWroks映像文件的生成,二是在虚拟机上安装VxWorks系统 19.10.10 首先很高兴文章能帮到大家,但由于本人已不做该方向良久,私信和评论的很多问题现在已经无法解答,如果大家有什么问题欢迎...

Alive的博客 3万+

Numpy--布尔索引

#布尔索引: 布尔索引是通过相同数组上的True还是False来进行提取的。提取的条件可以有多个,那么如果有多个,可以使用&来代表且,用来代表或,如果有多个条件,那么每个条件要使用圆括号括起来。 布尔运算也是矢量的,比如以下代码: a1 = np.arange(0,24).reshape((4,6)) print(a1<10) #会返回一个新的数组,这个数组中的值全部都是bool类型 > [[ True True True True True True] [ True Tr

qq_45829204的博客 7062

Qt实现窗口自适应分辨率大小

如果希望窗口大小始终保持与屏幕分辨率一致,可以将上述代码放在窗口的resizeEvent()函数中。这样,每当窗口大小发生变化时,都会自动调用resizeEvent()函数,从而实现窗口大小的自适应调整。在Qt中,可以通过一些简单的方法实现窗口大小随分辨率变化而自适应调整。获取到当前屏幕的分辨率后,可以根据需要调整窗口的大小。无论在何种分辨率下运行应用程序,窗口都能够正确地自动调整大小,提供更好的用户体验。除了调整窗口大小,还可以考虑将窗口设置为最大化,以充分利用屏幕空间。步骤2:调整窗口大小。

FuJavascript的博客 3655

Python精进系列:数据筛选利器之布尔索引

在Python编程中,尤其是在处理数据时,经常需要从数据集中筛选出符合特定条件的元素。布尔索引(Boolean Indexing)就是Python中一种非常强大且灵活的数据筛选技术,它允许使用布尔数组来选择数据结构(如列表、NumPy数组、Pandas数据框等)中的元素。布尔索引不仅提高了代码的简洁性,还能显著提升数据筛选的效率。本文将介绍Python布尔索引的基本概念、工作原理、应用场景以及使用时的注意事项。

进一步有进一步的欢喜~ 1475

从零到一:Python+Playwright 实现动态网站全量数据采集实战(附反爬对抗与性能优化)

在动手之前,先明确武器优势: 2. 项目结构规划 为了代码可维护性,我们采用模块化结构: 三、核心实战:构建动态采集器 第一步:初始化“隐身”浏览器 普通启动容易被检测,我们需要注入一段 JS 脚本来抹除自动化特征。 第二步:处理无限滚动与动态加载 这是动态网站的核心难点。我们需要模拟人类滚动,并等待新数据加载完成。 第三步:登录态保持与复用 避免每次运行都重新登录。我们将 Cookie 保存到本地,下次直接加载。 第四步:主流程编排 将上述模块串联起来,并加入异常重试机制。 四、进阶优化:性能与反爬

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1163

使用Python实现深度学习模型:智能光污染监测与管理

本项目将通过以下几个步骤实现智能光污染监测:收集光污染图像数据数据预处理构建深度学习模型训练模型评估模型部署模型用于实时监测通过本文介绍的步骤,我们实现了一个使用Python和深度学习技术的智能光污染监测与管理系统。该系统能够自动识别光污染源,为相关管理部门提供科学依据,以便更好地规划和管理城市照明。同时,这一方法还可以扩展到其他环境监测领域,为环境保护贡献力量。

Echo_Wish 595

NumPy基础之布尔索引

NumPy数组的布尔索引是指用一个由布尔值组成的数组来作为索引,此布尔数组的长度必须跟被索引的轴的长度一致。布尔值为True对应的元素被保留,为False对应的元素被舍弃。

sinat_34735632的博客 1502

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Python数据可视化(Numpy_4_布尔型索引、集合运算和排序)

布尔型索引、集合运算和排序 到目前为止,我们了解了如何使用索引进行切片以及选择 ndarray 元素。当我们知道要选择的元素的确切索引时,这些方法很有用。但是,在很多情况下,我们不知道要选择的元素的索引。例如,假设有一个 10,000 x 10,000 ndarray,其中包含从 1 到 15,000 的随机整数,我们只想选择小于 20 的整数。这时候就要用到布尔型索引,对于布尔型索引,我们将使用逻辑参数(而不是确切的索引)选择元素。我们来看一些示例: # We create a 5 x 5 ndarray

Dream的博客 319

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

python布尔型索引_Python ndarray 布尔型索引、集合运算和排序 (十五)

到目前为止,我们了解了如何使用索引进行切片以及选择 ndarray 元素。当我们知道要选择的元素的确切索引时,这些方法很有用。但是,在很多情况下,我们不知道要选择的元素的索引。例如,假设有一个 10,000 x 10,000 ndarray,其中包含从 1 到 15,000 的随机整数,我们只想选择小于 20 的整数。这时候就要用到布尔型索引,对于布尔型索引,我们将使用逻辑参数(而不是确切的索引)...

weixin_33160876的博客 734

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

06 numpy 布尔型索引 集合运算 排序

目录 一、布尔类型索引 二、集合运算 三、排序 一、布尔类型索引 import numpy as np # 创建arr arr = np.array([[1,2,3],[5,2,8],[1,2,3]]) print('arr = \n{}\n'.format(arr)) #获取arr 中元素大于3的元素 A = arr[arr >= 3] print("A = {}\n...

iKuboo 411

NumPy基础:逻辑条件、统计方法、布尔型数组、排序、集合逻辑

利用数组进行数据处理 np.meshgrid接受两个一维数组,并产生两个二维矩阵(对应两个数组中所有的(x,y)对) # 计算 x**2 + y**2 import numpy as np import matplotlib.pyplot as plt points = np.arange(-5,5,0.1) xs,ys = np.meshgrid(points,points) z = ...

zikizhh的博客 481

【Numpy学习】Numpy基础:数组和矢量计算

1.7 布尔型索引 来看这样一个例子,假设我们有一个用于存储数据的数组以及一个存储姓名的数组(含有重复项)。如果两个数组的维数不相同,则元素到元素的操作是不可能的。来看这样一个例子,假设我们有一个用于存储数据的数组以及一个存储姓名的数组(含有重复项)。注意:使用numpy.string_类型时,一定要小心,因为NumPy的字符串数据是大小固定的,发生截取时,不会发出警告。在多维数组中,如果省略了后面的索引,则返回对象会是一个维度低一点的ndarray(它含有高一级维度上的所有数据)。

gangyikeji的博客 1077

NumPy基础:数组和矢量计算

文章目录4.1 NumPy的ndarray:一种多维数组对象创建ndarrayndarray的数据类型NumPy数组的运算基本的索引和切片切片索引布尔型索引花式索引数组转置和轴对换4.2 通用函数:快速的元素级数组函数4.3 利用数组进行数据处理将条件逻辑表述为数组运算数学和统计方法用于布尔型数组的方法排序唯一化以及其它的集合逻辑4.4 用于数组的文件输入输出4.5 线性代数4.6 伪随机数生成4...

weixin_45414731的博客 884

Python NumPy 基础:数组和向量计算

numpy板块

weixin_42712867的博客 2476

学习笔记 | NumPy基础 | 数组操作、索引、简单统计分析

01 NumPy的ndarray:一种多维数组对象 2⃣️ 数组和标量之间的运算 不用编写循环即可对数据执行批量运算,这通常就叫做矢量化vectorization。 大小相等的数组之间的任何算术运算都会将运算应用到元素级。 数组与标量的算术运算也会将那个标量值传播到各个元素。 不同大小的数组之间的运算叫做广播broadcasting。 3⃣️ 基本的索引和切片 当你将一个标量值赋值给一个切片时,该值会自动传播到整个选区。 数组跟列表最重要的区别在于,数组切片是原始数组的视图。这意味着数据不会被复制,

大虎牙的博客 367

Numpy常用方法使用大全(超详细)

1、导入Numpy import numpy as np 2、向量相加 #向量相加-numpy def numpysum(n): a = np.arange(n)**2 b = np.arange(n)**3 c = a + b return c print(numpysum(20)) 3、Numpy数组 #numpy数组 a = np.arange(5) pr...

热爱永不过时! 7076

不看你一定后悔,基于 Numpy 的满满干货,你还在等什么呢?

和她纠纠缠缠这么久了,今天终于下了了断,花了一个多星期把这个份Numpy上分宝典准备好,你还在等什么呢?如果你想学数据分析,那我一定推荐你看我这份上分宝典,绝对全网最细,不服就看,带你学好,学会,学棒! --------------------------------------------------------------------------------------------------...

Blog沙漏在下雨 2488

Python数据分析1-NumPy入门和实战

Numpy库是用于科学计算的一个开源Python托充程序库,是其他数据分析包的基础包,他为Python提供了高性能数组与矩阵运算处理能力。本节将讲解多维数组的创建及其基本属性、数组的切片和索引方法、数组的运算与存取等内容。最后还有案例。 1.1ndarry数组 Numpy库为Python带来了真正的ndarry多维数组功能。ndarray对象是一个快速而灵活的数据集容器。本节主要学习ndarray多维数组的创建方法、数组的属性和数组中的简单操作等内容。 1.1.1创建n...

qq_45112156的博客 1314

Python之Numpy

Nmupy 官方帮助文档:Numpy手册 WHY Nmupy 虽然 Python 列表本身很强大,但是 NumPy 具有很多关键功能,从而比 Python 列表更具优势。其中一个优势便是速度。在对大型数组执行操作时,NumPy 的速度比 Python 列表的速度快了好几百倍。这是因为 NumPy 数组本身能节省内存,并且 NumPy 在执行算术、统计和线性代数运算时采用了优化算法。 NumPy 的...

u012777971的博客 375
上一篇: Python中的Numpy详解-3-Ndarry 切片
下一篇: 详解Python中的Pandas-7-数据加载
Python_P叔
博客等级 码龄3年 5451粉丝 827原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值