У меня есть список серий панд, которые я хочу проанализировать, чтобы определить, есть ли число в каждом индексе, которое в 5 раз больше, чем любое другое число в этом индексе в других списках. Если это правда, я бы хотел, чтобы функция возвращала значение, которое в 5 раз больше. Я написал:
import numpy as np
def check(samples_avg):
count = 0
results = []
filtered = []
for num in range(len(samples_avg)):
for i in range(len(samples_avg[num])):
for j in range(i + 1, len(samples_avg[num])):
if (np.any(samples_avg[i]) >= (np.all(samples_avg[j] * 5))):
count = count + 1
results.append((count == len(samples_avg) - 1))
filtered = [x for x, y in zip(samples_avg, results) if y == True]
print (filtered)
Вывод, на который я надеюсь, для filtered
будет списком списков, каждый список содержит только истинные значения из соответствующего ряда в samples_avg
.
Прямо сейчас функция печатает серию пустых списков, а затем всю серию, которая имеет истинное значение с индексом 0 и прекращает итерацию после этого. Также возвращается:
line 86, in check
if (np.any(samples_avg[i]) >= (np.all(samples_avg[j] * 5))):
IndexError: list index out of range
Как я могу исправить эту ошибку индекса и исправить вывод, чтобы он работал? Любой совет по этой проблеме также будет оценен. Спасибо