Вычисление max и индекса max в секции массива - PullRequest
0 голосов
/ 14 января 2020

После сообщения StackOverflow Элегантно вычислите среднее из первых трех значений списка Я настроил код, чтобы найти максимум.

Однако мне также необходимо знать положение / индекс макс. Таким образом, приведенный ниже код вычисляет максимальное значение для первых 3 чисел, а затем максимальное значение для следующих 3 чисел и т. Д.

Например, для списка значений [6 3 7 4 6 9 2 6 7 4 3 7 7 2 5 4 1 7 5 1]. Приведенный ниже код принимает первые 3 значения 6,3,7 и выводит max как 7, а затем для следующих 3 значений 4,6,9 выводит значение 9 и т. Д.

Но я также хочу найдите, в какой позиции / индексе они находятся, 1.e 7 - в позиции 2, а 9 - в позиции 5. Окончательный результат [2,5,8,11,12, ...]. Любые идеи о том, как рассчитать индекс. Заранее спасибо.

import numpy as np
np.random.seed(42)
test_data = np.random.randint(low = 0, high = 10, size = 20)
maxval = [max(test_data[i:i+3]) for i in range(0,len(test_data),3)]

print(test_data)
print(maxval)

output: test_data : [6 3 7 4 6 9 2 6 7 4 3 7 7 2 5 4 1 7 5 1]
output: [7, 9, 7, 7, 7, 7, 5]

1 Ответ

1 голос
/ 14 января 2020
import numpy as np
np.random.seed(42)
test_data = np.random.randint(low = 0, high = 10, size = 20)

maxval = [max(test_data[i:i+3]) for i in range(0,len(test_data),3)]
index = [(np.argmax(test_data[i: i+3]) + i) for i in range(0,len(test_data),3)]

print(test_data)
print(maxval)
print(index)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...