2013-04-11 22 views
19

Bir numpy dizim var. Her üçüncü öğenin üzerinde ortalama olan yeni bir dizi oluşturmak istiyorum. Böylece yeni dizi, orijinalin boyutunun üçte biri olacaktır.Sayısal dizinin her n öğesinin ortalaması Ortalama

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

Herkes bunu verimli bir yol önerebilir:

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

dizi dönmelidir: Örnek olarak

? Boşluk çiziyorum. daki dizi arr 3 ile bölünebilir bir uzunluğa sahipse

cevap

31

:

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

daha yüksek bir boyutlu bir dizi yeniden şekillendirme ve daha sonra ilave boyutları seçebilir işlemi azaltmak bir çeşit performans numpy programlama bir elyaf.

+7

Jaime - Teşekkürler, bu işleri yapmanın çok zarif bir yoludur. Bunların 'numpy programlama zımbaları' hakkında okunabileceği yer hakkında tavsiyeleriniz var mı? – user1654183

+1

'arr' uzunluğu 3 ile bölünemezse, aşağıdaki gibi bir şey yapabilirsiniz: 'arr = np.nanmean (np.pad (arr.astype (float), (0, 3 - arr.size% 3), mode = 'constant', constant_values ​​= np.NaN) .reshape (-1, 3), eksen = 1) ' – plong0

İlgili konular