【Python入门知识】NumPy 数组搜索,案例+理论讲解

news/2024/11/16 21:37:17/

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

搜索数组

可以在数组中搜索(检索)某个值,然后返回获得匹配的索引。

要搜索数组,请使用 where() 方法。

实例

查找值为 4 的索引:

import numpy as nparr = np.array([1, 2, 3, 4, 5, 4, 4])x = np.where(arr == 4)print(x)

运行实例

更多python资料、源码、教程: 点击此处跳转文末名片获取

上例会返回一个元组:(array([3, 5, 6],)

意思就是值 4 出现在索引 3、5 和 6。

实例

查找值为偶数的索引:

import numpy as nparr = np.array([1, 2, 3, 4, 5, 6, 7, 8])x = np.where(arr%2 == 0)print(x)

运行实例

实例

查找值为奇数的索引:

import numpy as nparr = np.array([1, 2, 3, 4, 5, 6, 7, 8])x = np.where(arr%2 == 1)print(x)

运行实例

搜索排序

有一个名为 searchsorted() 的方法,

该方法在数组中执行二进制搜索,并返回将在其中插入指定值以维持搜索顺序的索引。

假定 searchsorted() 方法用于排序数组。

实例

查找应在其中插入值 7 的索引:

import numpy as nparr = np.array([6, 7, 8, 9])x = np.searchsorted(arr, 7)print(x)

运行实例

例子解释: 应该在索引 1 上插入数字 7,以保持排序顺序。

该方法从左侧开始搜索,并返回第一个索引,其中数字 7 不再大于下一个值。

从右侧搜索

默认情况下,返回最左边的索引,但是我们可以给定 side=‘right’,以返回最右边的索引。

实例

从右边开始查找应该插入值 7 的索引:

import numpy as nparr = np.array([6, 7, 8, 9])x = np.searchsorted(arr, 7, side='right')print(x)

运行实例

例子解释:应该在索引 2 上插入数字 7,以保持排序顺序。

该方法从右边开始搜索,并返回第一个索引,其中数字 7 不再小于下一个值。

多个值

要搜索多个值,请使用拥有指定值的数组。

实例

查找应在其中插入值 2、4 和 6 的索引:

import numpy as nparr = np.array([1, 3, 5, 7])x = np.searchsorted(arr, [2, 4, 6])print(x)

运行实例

返回值是一个数组:[1 2 3] 包含三个索引,其中将在原始数组中插入 2、4、6 以维持顺序。

尾语 💝

要成功,先发疯,下定决心往前冲!

学习是需要长期坚持的,一步一个脚印地走向未来!

未来的你一定会感谢今天学习的你。

—— 心灵鸡汤

本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇


http://www.ppmy.cn/news/60656.html

相关文章

第三代移动通信技术(3G)

第三代移动通信采用码分多址(CDMA)技术,现已基本形成了三大主流技术,包括有:W-CDMA、CDMA-2000和TD-SCDMA。这三种技术都属于宽带CDMA技术,都能在静止状态下提供2Mbius的数据传输速率。但这三种技术在工作模…

Spring事务隔离级别详解

Spring有五大隔离级别: 1、ISOLATION_DEFAULT 2、ISOLATION_READ_UNCOMMITTED 3、ISOLATION_READ_COMMITTED 4、ISOLATION_REPEATABLE_READ 5、ISOLATION_SERIALIZABLE ISOLATION_DEFAULT 用底层数据库的设置隔离级别。 ISOLATION_READ_UNCOMMITTED 一个事…

Linux内核结构体“file_operations“ 初始化以及内存占用分析

01🙆‍♂️起因 在学习字符设备驱动的时候,看到Linux内核中的结构体的指定初始化方式(designated initializer)使用方式,之前没有见过这种初始化形式,做一点探索。 /* 字符设备操作集 */ static struct f…

【单目标优化算法】海鸥优化算法(Matlab代码实现)

💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥 🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 …

数据埋点2

文章目录 1 数据埋点流程2 六个步骤实现数据埋点设计2.1 确认事件与变量2.2 明确事件的触发时机2.3 明确事件的上报机制2.4 设计数据表结构2.5 统一字段命名规范2.6 明确优先级 3 以电商购物成交转化为例实现数据埋点设计 作为数据分析师的你,是否和我一样经常会被业…

OI 数论模板总结

1.欧几里得算法 可以通过欧几里得算法求出最大公因子。 int gcd(int x, int y) //欧几里得算法 { return y0 ? x : gcd(y, x%y); }2.扩展欧几里得 可以通过扩展欧几里得求出 a x b y d axbyd axbyd 不定方程的一组整数解。( a , b , d a, b, d a,b,d为正整…

【热门框架】Mybatis-Plus入门介绍看这一篇文章就足够了

MyBatis-Plus 是在 MyBatis 的基础上进行了封装,提供了更加便捷的开发方式,具有简化开发、提高效率等优点。以下是 MyBatis-Plus 的一些特点和用法: 通用 CRUD 操作:MyBatis-Plus 提供了通用的 CRUD 接口,可以直接调用…

TinyJAMBU的制动原理——一种轻量化的认证密码

关于TinyJAMBU的定义和介绍在另一篇博文已经介绍过了,这里只对其动作原理进行描述和说明。 对应的博文链接如下:TinyJAMBU:一种轻量化密码介绍 首先,该密码是一个流密码体系的块密码框架。其加密模式整体上来看是块密码&#xff0…