【发布时间】:2021-12-04 16:28:57
【问题描述】:
我的问题是如何获得列表中每个周期的每个最小值和最大值? 根据图表,我想在点 1 处获得第一个最大值,在点 30 处获得第一个最小值, 在点 62 处第二个最大值,在点 94 处第二个最小值
我已经尝试过,但它得到了错误的点,因为列表中的值并不稳定,如图所示
这是我尝试过的代码
import matplotlib.pyplot as plt
max_1 = 0
max_1_pos = 0
min_1_pos = 0
max_2 = 0
max_2_pos = 0
min_2_pos = 0
img_list_pix =[218, 225, 224, 224, 224, 220, 217, 215, 216, 216,
216, 215, 214, 215, 214, 214, 213, 210, 210, 205,
207, 204, 205, 201, 200, 201, 201, 197, 202, 203,
196, 196, 196, 196, 198, 198, 199, 202, 202, 205,
205, 205, 207, 206, 208, 207, 209, 214, 212, 213,
215, 218, 220, 219, 218, 220, 223, 222, 224, 224,
224, 222, 225, 222, 222, 222, 222, 223, 223, 221,
223, 222, 223, 219, 218, 216, 215, 214, 212, 212,
211, 211, 207, 206, 205, 204, 202, 199, 199, 198,
197, 195, 193, 191, 191, 193, 191, 196]
for i in range(len(img_list_pix)):
if img_list_pix[i] >= max_1:
max_1 = img_list_pix[i]
max_1_pos = i
else:
break
min_1 = max_1
print(f"max_1:{max_1} | i:{i}")
for i in range(max_1_pos + 1, len(img_list_pix)):
if img_list_pix[i] <= min_1:
min_1 = img_list_pix[i]
min_1_pos = i
else:
break
max_2 = min_1
print(f"min_1:{min_1} | i:{i}")
for i in range(min_1_pos + 1, len(img_list_pix)):
if img_list_pix[i] >= max_2:
max_2 = img_list_pix[i]
max_2_pos = i
else:
break
min_2 = max_2
print(f"max_2:{max_2} | i:{i}")
for i in range(max_2_pos + 1, len(img_list_pix)):
if img_list_pix[i] <= min_2:
min_2 = img_list_pix[i]
min_2_pos = i
else:
break
print(f"min_2:{min_2} | i:{i}")
结果
max_1:225 | i:2
min_1:215 | i:8
max_2:216 | i:11
min_2:214 | i:13
提前致谢。
【问题讨论】:
-
使用内置函数 min 和 max 将帮助您对您的 img_list_pix 进行一些明智的切片列表。你希望得到什么输出?
-
您的目标是在数组中找到局部最大值和最小值?
-
在您的逻辑中,为什么第一个最小值会在
30点触发? -
我觉得94必须改成93,是真的吗?
标签: python arrays list numpy graph