• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

NumPy squeeze hangi boyutları kaldırır?

  • Konuyu Başlatan Konuyu Başlatan Garfield
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 0
  • Etiketler Etiketler
    veri bilimi

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni
numpy.squeeze, uzunluğu 1 olan boyutları kaldırır; başka uzunluktaki boyutlara dokunmaz. Örneğin (1, 3, 1, 5) şekilli bir dizi, eksen belirtilmezse (3, 5) şekline dönüşür. Belirli bir ekseni kaldırmak istiyorsanız axis parametresini kullanabilirsiniz; seçtiğiniz eksenin uzunluğu 1 değilse işlem hata verir.

squeeze neyi değiştirir?​


Bir NumPy dizisinin boyut yapısı shape ile gösterilir. squeeze, yalnızca boyut uzunluğu tam olarak 1 olan eksenleri kaldırır. Boyut sayısını rastgele azaltmaz ve uzunluğu 1 olmayan eksenleri birleştirmez.

Varsayımsal bir örnekte dizinin şekli (1, 3, 1, 5) olsun. İlk eksenin uzunluğu 1, üçüncü eksenin uzunluğu da 1 olduğu için bu eksenler kaldırılır. Sonuç (3, 5) olur; 3 ve 5 uzunluklu eksenler korunur.

Python:
import numpy as np

veri = np.zeros((1, 3, 1, 5))
sonuc = np.squeeze(veri)

print(veri.shape)
print(sonuc.shape)

Beklenen çıktı şöyledir:

Kod:
(1, 3, 1, 5)
(3, 5)

Bu sonuç, verinin 3 ve 5 uzunluklu eksenlerinin silindiği anlamına gelmez; yalnızca uzunluğu 1 olan iki eksen kaldırılmıştır. squeeze değerleri yeniden hesaplamaz, dizinin boyut yapısını sadeleştirir.

Belirli bir boyutu kaldırma​


Tüm uzunluğu 1 olan eksenleri kaldırmak istemiyorsanız axis belirtin. axis=0, ilk ekseni; axis=1, ikinci ekseni ifade eder. Negatif eksen numaraları da sondan sayılır.

Python:
import numpy as np

veri = np.zeros((1, 3, 1, 5))

ilk_eksen_kaldirildi = np.squeeze(veri, axis=0)
ucuncu_eksen_kaldirildi = np.squeeze(veri, axis=2)

print(ilk_eksen_kaldirildi.shape)
print(ucuncu_eksen_kaldirildi.shape)

Çıktı:

Kod:
(3, 1, 5)
(1, 3, 5)

Burada yalnızca seçilen eksen kaldırılmıştır. Örneğin axis=0 kullanıldığında üçüncü eksenin uzunluğu 1 olsa bile korunur.

Önemli ayrım: axis ile belirtilen eksenin uzunluğu 1 değilse NumPy o ekseni kaldıramaz ve hata üretir. Bu nedenle aşağıdaki kullanım geçerli değildir:

Python:
import numpy as np

veri = np.zeros((2, 3, 1))
sonuc = np.squeeze(veri, axis=0)

İlk eksenin uzunluğu 2 olduğu için axis=0 kaldırılamaz. Bu durumda ya gerçekten uzunluğu 1 olan ekseni belirtin:

Python:
sonuc = np.squeeze(veri, axis=2)
print(sonuc.shape)  # (2, 3)

ya da tüm uzunluğu 1 olan eksenleri kaldırmak istiyorsanız axis parametresini vermeyin.

Sık karıştırılan şekil sonuçları​


Aşağıdaki örneklerde hangi eksenlerin kaldırıldığı görülebilir:
Başlangıç şekliKullanımSonuç şekli
(1, 4, 1)np.squeeze(x)(4,)
(1, 4, 1)np.squeeze(x, axis=0)(4, 1)
(1, 4, 1)np.squeeze(x, axis=2)(1, 4)
(2, 4, 1)np.squeeze(x)(2, 4)
(2, 4, 1)np.squeeze(x, axis=0)Hata
Tablodaki son satırda ilk eksenin uzunluğu 2 olduğu için axis=0 kullanılamaz. Buna karşılık eksen belirtilmeden yapılan işlem yalnızca sondaki uzunluğu 1 olan ekseni kaldırır ve (2, 4) sonucunu verir.

Bir boyutu korumak gerekiyorsa​


Bazen bir eksenin uzunluğu 1 olsa bile onu korumak gerekir. Örneğin bir dizinin iki boyutlu kalması, yayınlama kurallarının veya bir fonksiyonun beklediği giriş biçiminin bozulmaması için önemli olabilir. Böyle bir durumda np.squeeze(x) kullanmak yerine yalnızca güvenle kaldırmak istediğiniz ekseni axis ile belirtin ya da hiç sıkıştırma yapmayın.

Örneğin (1, 4, 1) şekilli bir dizide tüm tek uzunluklu eksenleri kaldırmak (4,) üretir. Yalnızca ilk ekseni kaldırmak ise (4, 1) üretir. Dolayısıyla işlemden sonra beklediğiniz şekli print(x.shape) ile kontrol edin; squeeze, verinin anlamını otomatik olarak yorumlamaz ve hangi eksenin uygulamanız için önemli olduğunu bilemez.
 
Son düzenleme:

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Geri
Üst