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

NumPy dot hangi çarpım işlemlerinde kullanılı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’de dot() kullanımı, dizilerin boyutuna göre değişir: iki skalerde normal çarpma, iki tek boyutlu dizide iç çarpım, iki iki boyutlu dizide matris çarpımı yapılır. Girdilerden biri skaler olduğunda işlem eleman bazında çarpmaya karşılık gelir. Birinci dizi çok boyutlu, ikinci dizi tek boyutluysa her ikisinin son ekseni üzerinden çarpımlar toplanır. İkinci dizi en az iki boyutlu olduğunda ise birinci dizinin son ekseni ile ikinci dizinin sondan bir önceki ekseni birleştirilir. Bu nedenle np.dot() kullanmadan önce dizilerin boyutlarını kontrol etmek gerekir; özellikle matris işlemlerinde np.matmul() veya @ daha açık bir tercih olabilir.

Boyuta göre np.dot() davranışı​


np.dot(a, b) ifadesi, a ve b dizilerinin boyutlarına göre farklı bir matematiksel işlem yapar:
Girdi boyutlarıYapılan işlemSonuç
0 boyutlu + 0 boyutluSkaler çarpmaTek bir sayı
1 boyutlu + 1 boyutluİç çarpım veya noktasal çarpımTek bir sayı
2 boyutlu + 1 boyutluMatris ile vektör çarpımı1 boyutlu dizi
2 boyutlu + 2 boyutluMatris çarpımı2 boyutlu dizi
Çok boyutlu dizilerBelirli eksenler boyunca çarpımların toplamıKalan eksenlere göre dizi
Bu tabloya göre dot(), yalnızca “elemanları karşılıklı çarpıp aynı biçimde bırakma” işlemi değildir. Sonuçta hangi eksenlerin toplandığı, dizilerin boyutlarına bağlıdır.

Tek boyutlu dizilerde iç çarpım​


İki vektör aynı uzunluktaysa dot() karşılıklı elemanları çarpar ve bu çarpımları toplar. Örneğin:

Python:
import numpy as np

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

sonuc = np.dot(a, b)
print(sonuc)

Hesaplama 1×4 + 2×5 + 3×6 şeklindedir ve çıktı 32 olur. Bu sonuç, vektörlerin iç çarpımıdır; iki vektörü yan yana birleştiren veya eleman bazında yeni bir dizi üreten işlem değildir.

İki boyutlu dizilerde matris çarpımı​


İki matris için dot(), satır-sütun kuralına göre matris çarpımı yapar:

Python:
import numpy as np

A = np.array([[1, 2],
              [3, 4]])

B = np.array([[5, 6],
              [7, 8]])

C = np.dot(A, B)
print(C)

Çıktı şöyledir:

Kod:
[[19 22]
 [43 50]]

Örneğin sol üstteki 19 değeri, 1×5 + 2×7 hesabından gelir. Sonuç matrisinin şekli, ilk matrisin satır sayısı ile ikinci matrisin sütun sayısına göre oluşur.

Matris-vektör çarpımı​


Bir iki boyutlu matris ile tek boyutlu vektör kullanıldığında her satır vektörle çarpılır ve toplanır:

Python:
import numpy as np

A = np.array([[1, 2],
              [3, 4]])
x = np.array([10, 20])

sonuc = np.dot(A, x)
print(sonuc)

Çıktı [50 110] olur. Çünkü ilk satır için 1×10 + 2×20 = 50, ikinci satır için 3×10 + 4×20 = 110 hesaplanır. Bu kullanım, doğrusal cebirde matrisin bir vektöre uygulanmasını ifade eder.

Eleman bazında çarpma ile karıştırmayın​


np.dot() ile * aynı işlem değildir. Aynı şekle sahip dizilerde * her konumdaki elemanı karşılıklı çarpar; dot() ise boyuta bağlı olarak çarpımları toplayabilir veya matris çarpımı yapabilir.

Python:
import numpy as np

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

print(a * b)
print(np.dot(a, b))

Çıktı mantıksal olarak şöyledir:

Kod:
[ 4 10 18]
32

İlk satır eleman bazında çarpımdır. İkinci satır ise bu üç çarpımın toplamıdır. Yalnızca karşılıklı elemanları çarpmak istiyorsanız * kullanın; iç çarpım veya matris çarpımı istiyorsanız dot() kullanın.

Şekil uyumluluğunu kontrol etme​


Matris işlemlerinde dizilerin yalnızca eleman sayısı değil, şekli de önemlidir. shape özelliğiyle bunu çalıştırmadan önce kontrol edebilirsiniz:

Python:
print(A.shape)
print(B.shape)

İki boyutlu A ve B için A.shape[1] ile B.shape[0] değerleri eşleşmelidir. Örneğin (2, 3) şekilli bir matris, (3, 4) şekilli bir matrisle çarpılabilir ve sonuç (2, 4) olur. İç boyutlar eşleşmiyorsa işlem, boyut uyumsuzluğu hatasıyla sonuçlanır.

dot() yerine ne zaman @ kullanılır?​


İki matrisin veya matris ile vektörün çarpımını açıkça belirtmek istiyorsanız @ operatörü daha okunaklıdır:

Python:
matris_sonucu = A @ B
vektor_sonucu = A @ x

Bu kullanım matris çarpımı niyetini doğrudan gösterir. np.dot() ise skaler, vektör, matris ve çok boyutlu dizi girişlerinde boyuta göre davranabildiği için genel amaçlıdır. Özellikle çok boyutlu dizilerde hangi eksenlerin birleştirildiğini açıkça düşünmeden kullanmak beklenmeyen sonuçlara yol açabilir.

Kısaca: iç çarpım için iki tek boyutlu dizide, matris çarpımı için iki boyutlu dizide, matris-vektör işlemi için uygun şekilli matris ve vektörde np.dot() kullanabilirsiniz. Eleman bazında çarpım gerekiyorsa * operatörünü, açık matris çarpımı gerekiyorsa @ operatörünü tercih edin.
 

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