Вы можете reshape
массив использовать функцию mean
, например:
a = np.arange(1,11)
b = a[:a.size//3*3]
b.shape = (-1,3)
c = np.mean(b, axis=1)
# c == array([2., 5., 8.])
Затем переназначить результаты в исходный массив:
c.shape = (-1,1) # i.e. (len(b), 1)
b[:] = c
print(a)
# array([ 2, 2, 2, 5, 5, 5, 8, 8, 8, 10])
Обратите внимание, чтоэто работает, потому что b
является подэлементом a
. Кроме того, последний элемент не такой, как вы просили среднее значение (я оставил его нетронутым), но его будет легко исправить, например:
a[9:] = np.mean(a[9:])