Я хотел бы вычислить среднее значение двух последовательных элементов массива Python, чтобы длина конечного массива имела длину, равную длине исходного массива минус один (что-то вроде np.diff, но со средним значением вместо разницы ).
Итак, если у меня есть массив
a = [1, 2, 3, 4, 5, 6]
результат, который я хотел бы получить, был бы
a_mean = [1.5, 2.5, 3.5, 4.5, 5.5]
Есть ли более разумное решение, использующее numpy вместо цикла? Я не смог придумать разумного решения.
@S3gfault Я как раз собирался написать это в качестве ответа. Почему бы и нет? :D
То же самое. Обобщение: N = 2 ; np.convolve([1, 2, 3, 4, 5, 6], np.ones(N)/N, mode='valid')
Правда не проверял
Также см. ответы на этот похожий вопрос: stackoverflow.com/questions/13728392






np.convolve([1, 2, 3, 4, 5, 6], [.5, .5], mode='valid')
Как обсуждалось в комментарии, для N-последовательных значений: N = 2 ; np.convolve(a, np.ones(N)/N, mode='valid') или np.convolve(a, np.full(N, 1/N), mode='valid')
np.convolve([1, 2, 3, 4, 5, 6], [.5, .5], mode='valid')