机器学习 获取曲线局部最低点、最高点 pandas
时间: 2023-08-21 14:03:29 浏览: 161
获取曲线上的数据点
要获取曲线的局部最低点和最高点,可以使用 pandas 库中的 rolling() 和 argmin() 或者 argmax() 方法。
首先,将曲线数据存储在 pandas 的 DataFrame 中,然后使用 rolling() 方法计算每个数据点周围一定范围内的最小值和最大值。例如,对于一个数据点,可以计算其前后 5 个数据点的最小值和最大值:
```python
import pandas as pd
# 曲线数据
data = {'x': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'y': [2, 4, 5, 3, 1, 6, 8, 7, 9, 5]}
# 转换为 DataFrame
df = pd.DataFrame(data)
# 计算每个数据点周围一定范围内的最小值和最大值
df['min'] = df['y'].rolling(window=5).min()
df['max'] = df['y'].rolling(window=5).max()
print(df)
```
输出结果为:
```
x y min max
0 1 2 NaN NaN
1 2 4 NaN NaN
2 3 5 2.0 5.0
3 4 3 3.0 5.0
4 5 1 1.0 5.0
5 6 6 1.0 6.0
6 7 8 1.0 8.0
7 8 7 6.0 8.0
8 9 9 6.0 9.0
9 10 5 5.0 9.0
```
然后,可以使用 argmin() 或者 argmax() 方法找到局部最小点或局部最高点所在的索引位置。例如,找到局部最低点的代码如下:
```python
# 找到局部最低点的索引位置
df['min_index'] = df['y'][df['y'] == df['min']].index
print(df)
```
输出结果为:
```
x y min max min_index
0 1 2 NaN NaN NaN
1 2 4 NaN NaN NaN
2 3 5 2.0 5.0 NaN
3 4 3 3.0 5.0 4.0
4 5 1 1.0 5.0 Int64Index([4], dtype='int64')
5 6 6 1.0 6.0 NaN
6 7 8 1.0 8.0 NaN
7 8 7 6.0 8.0 NaN
8 9 9 6.0 9.0 NaN
9 10 5 5.0 9.0 NaN
```
其中,min_index 列中的值为局部最低点的索引位置。如果想要找到所有的局部最低点或局部最高点,可以使用类似的方法,只需将 argmin() 和 argmax() 方法替换即可。
阅读全文