详解Python之find函数的使用

目录

         一、find函数的官方定义

         二、find函数的详细函数使用解释


一、find函数的官方定义

首先,Python的find函数多用在字符串的处理上,也是Python计算机二级的小考点

定义:Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。

语法

str.find(str, beg=0, end=len(string))

参数

str---a指定检索的字符串

beg---开始检索,默认为0

end---结束检索,默认为字符串的长度

返回值

如果包含子字符串返回开始的索引值,否则返回-1。

二、find函数的详细函数使用解释

第一个例子(tips:可以复制代码到idle里边,然后自己运行着看,这个看不懂可以再看看第二个例子,结合着理解)

str = "abcdefa"
print(str.find("a"))  # 从下标0开始,查找在字符串里第一个出现的子串,返回结果
print(str.find("a",1)) # 从下标1开始,查找在字符串里第一个出现的子串:返回结果6
print(str.find("7"))# 查找不到返回-1

第二个例子(tips:可以把代码沾到idle中,运行然后对照着我的下边的解答看)

str = "hello Best wishes to you";
str1 = "to";
print(str.find(str1))
print(str.find(str1,10))
print(str.find(str1,18))
print(str.find(str1,19))
print(str.find(str1,17,19))
print(str.find(str1,17,20))
print(str.find(str1,18,20))

第一个从字符h(下标为0)开始数起,一直到检索到t停止,一直检索过来,是18个字符串

所以首先,第一个print结果为18

第二个从第10个字符串开始数起,只要后面有to这个字符,那么就返回开始的索引值,也就是18

第三个从第18个字符串开始数起,刚好落在t字符串上,从t开始检索,那往后开始检索肯定没问题,继续返回18

第四个从第19个字符串开始数起,也就是to的o后面的空格,从空格往后检索,那么就没有想要的内容了,所以返回-1

第五个print里边我添加了end的参数,因为直接定位在19,所以相当于o检索不上,所以输出-1

第六个print我更改end为20,这时候就可以正常输出了

第七个print里边我把17改为18,19改为20,依然可以输出,理由同上,举6反1。

朋友,祝你顺利!!!

### Python `scipy.signal.find_peaks` 函数详解 `scipy.signal.find_peaks` 是 SciPy 库中的一个重要工具,用于检测一维数组中的局部最大值(即峰值)。该函数允许用户指定多种条件来筛选感兴趣的峰值。 以下是关于此函数的一些核心特性及其使用方法: #### 基础语法 ```python from scipy.signal import find_peaks peaks, properties = find_peaks(x, height=None, threshold=None, distance=None, prominence=None, width=None, wlen=None, rel_height=False, plateau_size=None) ``` - **输入参数** - `x`: 输入的一维数据序列(通常是 NumPy 数组),表示要分析的信号。 - `height`: 可选参数,定义峰值的高度阈值。支持单个数值或范围 (min, max)[^1]。 - `threshold`: 定义峰值与其相邻点之间的最小差值[^4]。 - `distance`: 设置两个连续峰值之间所需的最小距离。 - `prominence`: 表示峰值相对于其周围基线的突出程度。 - `width`: 指定峰值宽度的约束条件。 - `wlen`: 计算突显度和宽度时使用的窗口长度。 - `plateau_size`: 如果存在平顶峰,则可设置平台大小作为过滤器。 - **返回值** - `peaks`: 返回满足条件的峰值索引列表。 - `properties`: 字典形式存储额外属性信息,例如高度 (`peak_heights`) 和突显度 (`prominences`)。 --- #### 示例代码解析 以下是一个完整的例子,演示如何利用 `find_peaks` 来定位并可视化信号中的峰值: ```python import numpy as np import matplotlib.pyplot as plt from scipy.signal import find_peaks # 创建测试信号 signal = np.array([0, 6, 25, 20, 15, 8, 15, 6, 0, 6, 0, -5, -15, -3, 4, 10, 8, 13, 8, 10, 3, 1, 20, 7, 3, 0]) # 执行峰值检测 peaks, _ = find_peaks(signal, height=7, distance=2) # 绘制结果图 plt.plot(signal, label='Signal') plt.plot(peaks, signal[peaks], "o", color="red", label='Detected Peaks') plt.legend() plt.title("Peak Detection with find_peaks()") plt.xlabel("Index") plt.ylabel("Amplitude") plt.grid(True) plt.show() ``` 上述代码中设置了 `height=7` 和 `distance=2` 的条件,分别代表只保留幅度高于 7 并且彼此间隔至少为 2 的峰值。 --- #### 参数调整与实际应用 当处理真实世界的数据集时,可能需要微调某些参数以适应具体需求。例如,在噪声较大的情况下增加 `prominence` 或者减少 `distance` 都能有效改善检测效果。 另外值得注意的是,除了内置选项外还可以自定义逻辑进一步优化输出质量。比如结合其他统计学指标或者机器学习模型辅助判断哪些才是真正的目标特征[^3]。 ---
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值