【发布时间】:2021-09-22 19:32:38
【问题描述】:
我有一个包含几个单调递减元素的 python 列表。然而,所有这些序列并不相邻
A = [[100, 83, 82, 51, 45, 29, 100, 100, 88, 88, 76, 76, 76, 59, 10, 12, 36, 100, 100, 86, 81, 79, 65, 65, 9, 10, 8]
我想从A 中提取a1 = [100, 83, 82, 51, 45, 29]、a2=[100, 100, 88, 88, 76, 76, 76, 59, 10]、a3=[100, 100, 86, 81, 79, 65, 65, 9]。正如您必须注意到的,我从A 中丢弃了12,36,10,8,因为它们不遵循任何模式。每个子数组的第一个元素应该大于 80。因此,我丢弃了以 10 作为初始元素的单调子数组
到目前为止,我有这个。
def chop_array(array):
itr = 0
prev_element = 1e6
window = list()
mainWindow = list ()
for i, element in enumerate(array):
if element <= prev_element:
window.append(element)
prev_element = element
else:
mainWindow.append(window)
prev_element = element
window = list()
window.append(element)
filter_array = [True if item[0] > 80 else False for item in mainWindow]
return list(itertools.compress(mainWindow,filter_array))
在 python 中有没有更有效的方法?
【问题讨论】:
-
100,100 并不是严格递减的。
-
感谢更正
-
你能解释一下为什么列表末尾的
[10, 8]被丢弃了吗?它形成一个单调递减的子列表。 -
@MustafaAydın 我已经编辑了描述,每个子阵列可以有多小有一个阈值要求。现在让我们假设每个子数组应该有 80 作为第一个元素
标签: python python-3.x list numpy