2013-04-11 13 views
19

Mam tablicę numpy. Chcę utworzyć nową tablicę, która jest średnią z co trzeciego elementu. Tak więc nowa tablica będzie trzecią częścią wielkości oryginału.Uśrednianie dla wszystkich n elementów tablicy numpy

Jako przykład:

np.array([1,2,3,1,2,3,1,2,3]) 

powinna zwracać tablicę:

np.array([2,2,2]) 

Czy ktoś może zaproponować skuteczny sposób to zrobić? Rysuję puste miejsca.

Odpowiedz

31

Jeśli tablica arr ma długość podzielna przez 3:

np.mean(arr.reshape(-1, 3), axis=1) 

przekształcanie do wyższej wymiarowej tablicy, a następnie wykonując jakąś formę zmniejszyć działanie na jeden z dodatkowych wymiarów jest podstawą programowania numpy.

+7

Jaime - dziękuję, to bardzo elegancki sposób robienia rzeczy. Czy masz jakąkolwiek radę na temat tego, gdzie można przeczytać o tak zwanych "zszywkach bezmyślnego programowania"? – user1654183

+1

jeśli 'arr' długość nie jest podzielna przez 3, możesz zrobić coś takiego: ' arr = np.nanmean (np.pad (arr.statype (float), (0, 3 - arr.size% 3), mode = 'constant', constant_values ​​= np.NaN) .reshape (-1, 3), axis = 1) ' – plong0

Powiązane problemy