Kısa yanıt:
Çıktı
İki boyutlu bir dizide
Aynı veri için sonuçlar şöyledir:
Bunu çalışan kodla görmek için:
Önemli ayrım: “0. eksen” ifadesi “ilk sütun” anlamına gelmez.
Bir dizinin boyutlarını
Daha sonra özgün diziyle yayınlama işlemi yapacaksanız
Burada her satır için bir ortalama hesaplanır; ancak sonuç
Önce
Sonucun beklenenden farklı sayıda elemana sahip olması genellikle yanlış eksenin seçildiğini gösterir. Sonuç şekli, ortalama alınan eksenin kaldırılmasıyla oluşur; bu nedenle hesaplamadan önce ve sonra
np.mean() varsayılan olarak axis=None ile dizideki tüm elemanların ortalamasını tek bir sayı olarak hesaplar. İki boyutlu bir dizide axis=0 her sütunun, axis=1 her satırın ortalamasını verir. Sonuç biçimini doğru yorumlamak için eksenin hangi boyutu birleştirdiğini kontrol etmelisiniz.Varsayılan davranış: tüm dizinin ortalaması
axis belirtilmezse NumPy tüm elemanları aynı hesaplamaya dahil eder. Örneğin 2×3 boyutundaki şu dizide altı değer vardır:
Python:
import numpy as np
veri = np.array([
[1, 2, 3],
[4, 5, 6]
])
print(np.mean(veri))
Çıktı
3.5 olur; çünkü hesaplama (1 + 2 + 3 + 4 + 5 + 6) / 6 şeklindedir. Yani varsayılan davranışta satır veya sütun başına ayrı sonuç üretilmez.axis=0 ve axis=1 arasındaki fark
İki boyutlu bir dizide
axis=0 ilk eksen boyunca birleştirme yapar. Bu nedenle satırlar birleştirilir ve her sütun için bir ortalama kalır. axis=1 ise ikinci eksen boyunca birleştirir; bu nedenle sütunlar birleştirilir ve her satır için bir ortalama kalır.Aynı veri için sonuçlar şöyledir:
| Kullanım | Hesaplama yönü | Sonuç |
|---|---|---|
np.mean(veri) | Tüm elemanlar | 3.5 |
np.mean(veri, axis=0) | Satırlar birleştirilir, sütun ortalamaları alınır | [2.5, 3.5, 4.5] |
np.mean(veri, axis=1) | Sütunlar birleştirilir, satır ortalamaları alınır | [2., 5.] |
Python:
print(np.mean(veri, axis=0))
# [2.5 3.5 4.5]
print(np.mean(veri, axis=1))
# [2. 5.]
axis=0 sonucu, her sütundaki değerlerin ortalamasını verir: (1+4)/2, (2+5)/2 ve (3+6)/2. axis=1 sonucu ise her satırın ortalamasını verir: (1+2+3)/3 ve (4+5+6)/3.Önemli ayrım: “0. eksen” ifadesi “ilk sütun” anlamına gelmez.
axis=0, ilk eksen boyunca hesaplama yapar ve iki boyutlu dizide satırları ortadan kaldırdığı için sütun başına sonuç üretir.Üç boyutlu dizilerde ekseni yorumlama
Bir dizinin boyutlarını
shape ile kontrol edebilirsiniz:
Python:
veri = np.arange(24).reshape(2, 3, 4)
print(veri.shape)
# (2, 3, 4)
print(np.mean(veri, axis=0).shape)
# (3, 4)
print(np.mean(veri, axis=1).shape)
# (2, 4)
print(np.mean(veri, axis=2).shape)
# (2, 3)
(2, 3, 4) biçimindeki dizide axis=0 ilk boyutu, axis=1 ikinci boyutu, axis=2 üçüncü boyutu birleştirir. Hesaplanan eksen sonuçtan çıkarılır; bu nedenle sonuç şekli sırasıyla (3, 4), (2, 4) ve (2, 3) olur.Sonuç boyutunu korumak: keepdims
Daha sonra özgün diziyle yayınlama işlemi yapacaksanız
keepdims=True kullanmak yararlı olabilir. Bu seçenek, ortalaması alınan ekseni kaldırmak yerine uzunluğunu 1 olarak korur.
Python:
veri = np.array([
[1, 2, 3],
[4, 5, 6]
])
satir_ortalamalari = np.mean(veri, axis=1, keepdims=True)
print(satir_ortalamalari)
# [[2.]
# [5.]]
print(satir_ortalamalari.shape)
# (2, 1)
Burada her satır için bir ortalama hesaplanır; ancak sonuç
(2,) yerine (2, 1) biçiminde kalır. Bu, her satırın ortalamasını o satırdaki değerlere uygulamak gibi işlemlerde boyut uyumsuzluğu riskini azaltır.Doğru ekseni seçmek için kısa kontrol
Önce
veri.shape ile boyut sırasını yazdırın. Ardından ortalamasını almak istediğiniz boyutu belirleyin. Satırları birleştirip sütun başına sonuç istiyorsanız axis=0; sütunları birleştirip satır başına sonuç istiyorsanız axis=1 kullanın. Tüm değerlerin tek ortalamasını istiyorsanız eksen vermeyin veya açıkça axis=None yazın.
Python:
print(veri.shape)
print(np.mean(veri, axis=None))
Sonucun beklenenden farklı sayıda elemana sahip olması genellikle yanlış eksenin seçildiğini gösterir. Sonuç şekli, ortalama alınan eksenin kaldırılmasıyla oluşur; bu nedenle hesaplamadan önce ve sonra
.shape değerini karşılaştırmak, eksen seçimini doğrulamanın en hızlı yoludur.
Son düzenleme: