0Pricing
Pandas & NumPy Academy · Ders

Yayma Kuralları

Açıkça kopyalamadan 1B bir diziyi 2B bir dizinin her satırına ekleyebilmek için NumPy’nin yayma kurallarını anlayın.

Yayma Kuralları, CoddyKit'te ücretsiz bir Pandas & NumPy Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Pandas & NumPy Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.

Broadcasting'in Çözdüğü Problem

Broadcasting, farklı ancak uyumlu şekillere sahip dizileri veri kopyalamadan birleştirmenizi sağlar — küçük olan, büyüğe uyacak şekilde genişletilir.

import numpy as np

# Adding a scalar to an array is the simplest broadcast
a = np.array([1, 2, 3])
print(a + 10)  # [11 12 13]
# Scalar 10 is 'broadcast' to shape (3,)

Broadcasting Kuralı 1: 1'leri Başa Ekleyin

NumPy, şekilleri sağdan hizalar. Bir dizinin boyut sayısı daha azsa, sol tarafına 1'ler ekler — böylece (3,) şeklindeki bir dizi, (4, 3) şeklindeki dizinin yanında (1, 3) gibi davranır.

import numpy as np

m = np.ones((4, 3))
v = np.array([10, 20, 30])  # shape (3,) -> treated as (1, 3)

result = m + v   # shape (4, 3)
print(result)
# [[11. 21. 31.]
#  [11. 21. 31.]
#  [11. 21. 31.]
#  [11. 21. 31.]]

Broadcasting Kuralı 2: Boyutu 1 Olan Boyutları Genişletin

Boyutu 1 olan herhangi bir boyut, diğer dizinin boyutuna uyacak şekilde genişleyebilir — gerçekte hiçbir veri kopyalanmaz. Her iki dizi de boyutu 1 olan boyutlarını aynı anda genişletebilir.

import numpy as np

# (3, 1) + (1, 4)  -->  (3, 4)
col = np.array([[1], [2], [3]])    # shape (3, 1)
row = np.array([[10, 20, 30, 40]]) # shape (1, 4)
print((col + row).shape)  # (3, 4)
print(col + row)

Broadcasting Kuralı 3: Uyumsuz Şekiller

İki boyut eşit değilse ve ikisi de 1 değilse broadcasting, bir ValueError ile başarısız olur. Şekilleri önceden kontrol etmek, fark edilmeyen bir hata yerine açık bir hata almanızı sağlar.

import numpy as np

a = np.ones(3)
b = np.ones(4)
try:
    a + b
except ValueError as e:
    print(e)
# operands could not be broadcast together with shapes (3,) (4,)

Uygulama: Sütun Ortalamasını Çıkarma

Klasik bir işlem: verilerinizi merkezlemek için her satırdan her sütunun ortalamasını çıkarın. keepdims=True kullanıldığında ortalama, broadcasting işleminin sorunsuz çalışacağı bir şekli korur.

import numpy as np

data = np.array([[1., 2., 3.],
                 [4., 5., 6.],
                 [7., 8., 9.]])

col_mean = data.mean(axis=0)          # shape (3,)
centred = data - col_mean             # broadcast along axis 0
print(centred)
# [[-3. -3. -3.]
#  [ 0.  0.  0.]
#  [ 3.  3.  3.]]

Uygulama: Satır Normalleştirme

Her satırın toplamını 1 yapmak için satırı, kendi toplamına bölün. Toplamın (n, 1) şeklini koruması ve sütunlar boyunca broadcasting yapılması için keepdims=True kullanın.

import numpy as np

m = np.array([[1., 2., 3.],
              [4., 5., 6.]])

row_sums = m.sum(axis=1, keepdims=True)  # shape (2, 1)
normed = m / row_sums
print(normed.round(3))
# [[0.167 0.333 0.5  ]
#  [0.267 0.333 0.4  ]]

Broadcasting ile Dış Çarpımlar

Bir diziyi (n, 1), diğerini (1, m) şekline dönüştürüp çarpın — broadcasting, döngülere gerek kalmadan tam dış çarpım matrisini sizin için oluşturur.

import numpy as np

a = np.array([1, 2, 3])
b = np.array([10, 20, 30, 40])

outer = a[:, np.newaxis] * b[np.newaxis, :]
print(outer)
# [[ 10  20  30  40]
#  [ 20  40  60  80]
#  [ 30  60  90 120]]

3 Boyutlu Dizilerle Broadcasting

Broadcasting her boyut sayısıyla çalışır. (100, 28, 28) şeklindeki bir görüntü grubunun merkezi, (1, 28, 28) şeklindeki piksel başına ortalamayla alınabilir — NumPy, 1'i genişletir.

import numpy as np

batch = np.random.rand(100, 28, 28)  # 100 images
pixel_mean = batch.mean(axis=0, keepdims=True)  # (1, 28, 28)
centred = batch - pixel_mean          # (100, 28, 28)
print(centred.shape)  # (100, 28, 28)

Açıkça Genişletme için np.broadcast_to

np.broadcast_to, bir kopya oluşturmadan, broadcasting sonucunun tam olarak nasıl göründüğünü salt okunur bir görünüm olarak gösterir. Şekillerin nasıl hizalandığını anlamak için idealdir.

import numpy as np

a = np.array([1, 2, 3])
view = np.broadcast_to(a, (4, 3))
print(view)
# [[1 2 3]
#  [1 2 3]
#  [1 2 3]
#  [1 2 3]]
print(view.flags.writeable)  # False

Uyumlu Şekilleri Görselleştirme

Yararlı bir kural: Şekilleri sağdan hizalayın ve her çifti kontrol edin. Eşitlerse veya bir tanesi 1 ise uyumludurlar. Kodu çalıştırmadan önce şekilleri tahmin edin!

# Shape compatibility examples:
# (3, 4) + (   4) -> (3, 4)  OK: 4==4, 1 implied
# (3, 4) + (3, 1) -> (3, 4)  OK: 4 vs 1, 3==3
# (2, 3, 4) + (3, 4) -> (2, 3, 4)  OK
# (3, 4) + (3,  ) -> ERROR: 4 vs 3
import numpy as np
print(np.zeros((3,4)).shape)       # (3, 4)
print((np.zeros((3,4)) + np.zeros(4)).shape)  # (3, 4)

Yaygın Broadcasting Hataları

En yaygın broadcasting tuzağı, toplama işleminden sonra keepdims=True kullanmayı unutmaktır; bu durumda şekiller hizalanmaz. Takıldığınızda, gerçekte ne olduğunu görmek için print(arr.shape) yazdırın.

import numpy as np

m = np.arange(6).reshape(2, 3)
row_max = m.max(axis=1)            # shape (2,)  NOT (2,1)
print(row_max.shape)               # (2,)
# m - row_max  -> ERROR: shapes (2,3) and (2,) misalign

row_max_col = row_max[:, np.newaxis]  # shape (2, 1)
print((m - row_max_col).shape)     # (2, 3)  OK

Hızlı Kontrol

Bu derste öğrendiğiniz NumPy broadcasting kurallarını anlayıp anlamadığınızı test edin.

Ders Özeti

Başardınız! Broadcasting, boyutu 1 olan boyutları genişletir, şekilleri sağdan karşılaştırır ve keepdims=True, matematiksel işlemlerin hizalanması için eksenleri korur. Sırada: mantıksal maskeleme.

Sıkça Sorulan Sorular

“Yayma Kuralları” dersi ücretsiz mi?

Evet — “Yayma Kuralları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Pandas & NumPy Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.

“Yayma Kuralları” dersinde ne öğreneceğim?

Açıkça kopyalamadan 1B bir diziyi 2B bir dizinin her satırına ekleyebilmek için NumPy’nin yayma kurallarını anlayın. Pandas & NumPy Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Pandas & NumPy Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Pandas & NumPy Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Yayma Kuralları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Pandas & NumPy Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Pandas & NumPy Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Evrensel İşlevler (ufunc’lar)
  2. Toplama İşlevleri
  3. Yayma Kuralları
  4. Boole Maskeleme ve Gelişmiş Dizinleme
← Pandas & NumPy Academy Sayfasına Dön