У меня есть набор данных, как
x y
1 0.34
2 0.3432
3 0.32
4 0.35
5 0.323
6 0.3623
7 0.345
8 0.32
9 0.31
10 0.378
11 0.34
12 0.33
13 0.31
14 0.33
15 0.34
Для этого набора данных я хочу выполнить задачу, которая будет проходить через мой набор данных и будет подсчитывать количество вхождений выше среза, если длина вхождения превышает M.
Отсечка и M будут системными аргументами.
Так что, если отсечение равно 0,32, а М равно 1, оно распечатает список как
[2, 4, 3, 2]
Логика: первые два значения во втором столбце больше 0,32, а длина больше, чем M = 1, следовательно, распечатано 2 и 4,3,2 и т. Д.
Мне нужна помощь, чтобы написать аргумент так, чтобы, если x> cutoff и длина сломанного>> M, он выводил длину сломанных кадров (так же, как указано выше). Любая помощь?
Структура должна выглядеть следующим образом (я не уверен, как разместить аргумент вместо XXX)
def get_input(filename):
with open(filename) as f:
next(f) # skip the first line
input_list = []
for line in f:
input_list.append(float(line.split()[1]))
return input_list
def countwanted(input_list, wantbroken, cutoff,M):
def whichwanted(x):
if(wantbroken): return x > cutoff
else: return x < cutoff
XXX I think here I need to add the criteria for M but not sure how?
filename=sys.argv[1]
wantbroken=(sys.argv[2]=='b' or sys.argv[2]=='B')
cutoff=float(sys.argv[3])
M=int(sys.argv[4])
input_list = get_input(filename)
broken,lifebroken=countwanted(input_list,True,cutoff,M)
#closed,lifeclosed=countwanted(input_list,False,cutoff,M)
print(lifebroken)
#print(lifeclosed)
Или, может быть, есть более простой способ написать это.