CodeBlanks Logo Icon CodeBlanks

Dizi yeniden şekillendirme

reshape() metodu ile dizinin boyutu değiştirilir; toplam eleman sayısı korunur.

reshape

reshape eleman sayısını değiştirmeden diziye yeni bir şekil verir. Yeni şeklin çarpımı eski size'a eşit olmalıdır:

a = np.arange(6)          # [0 1 2 3 4 5]
print(a.reshape(2, 3))    # [[0 1 2] [3 4 5]]
print(a.reshape(3, -1))   # -1: sütun sayısını hesapla -> (3, 2)
# a.reshape(4, 2)  ValueError: 6 eleman 8'e sığmaz

Elemanlar satır satır (C sırası) yerleştirilir.

flatten ve transpoz

flatten() diziyi tek boyuta indirir; .T satırları sütun yapar:

m = np.array([[1, 2, 3],
              [4, 5, 6]])
print(m.flatten())   # [1 2 3 4 5 6]
print(m.T.shape)     # (3, 2)
print(m.T)           # [[1 4] [2 5] [3 6]]

Görüntü verisinde 28×28 pikseli 784 uzunluklu bir vektöre çevirmek, sinir ağına vermeden önce sık yapılan bir adımdır.

Uygulama Yeniden şekillendir

np.arange(1, 13) dizisini 3 satırlı bir matrise çevir (-1 kullan). Matrisi, ardından transpozunun shape değerini yazdır.

Başlangıç kodu

model.py
import numpy as np

a = np.arange(1, 13)

# buraya yaz

Örnek çözüm

model.py
import numpy as np

a = np.arange(1, 13)

m = a.reshape(3, -1)
print(m)
print(m.T.shape)

Beklenen çıktı

[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
(4, 3)

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 12 elemanlı bir dizi için hangisi geçersizdir?

  • reshape(2, -1)
  • reshape(2, 2, 3)
  • reshape(5, -1) Doğru cevap
  • reshape(3, 4)

Açıklama: 12, 5'e tam bölünmediği için -1 hesaplanamaz ve ValueError oluşur.

2 Diziyi tek boyuta indir.

Soru
v = m.____()
Cevap
v = m.flatten()

Açıklama: flatten her zaman yeni bir tek boyutlu kopya döndürür.

3 İşlemleri sonuç şekilleriyle eşleştir (a = np.arange(12)).

Kavram Anlamı
a.reshape(3, 4) (3, 4)
a.reshape(3, 4).T (4, 3)
a.reshape(2, -1) (2, 6)
a.reshape(2, 6).flatten() (12,)

Başlangıç bölümündeki tüm dersler