> For the complete documentation index, see [llms.txt](https://mehmet-akif-akkus.gitbook.io/numpy-ile-veri-bilimi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mehmet-akif-akkus.gitbook.io/numpy-ile-veri-bilimi/numpy-dizileri-uzerinde-islemler/basit-matematik-islemleri.md).

# Basit Matematik İşlemleri

Öncelikle numpy kütüphanesini ekleyelim ve basit iki matris oluşturalım.

```python
import numpy as np

x = np.array([[1,2],[3,4]], dtype=np.float64)  # türü noktalı sayı olarak belirlendi
y = np.array([[5,6],[7,8]], dtype=np.float64)
```

## Matrislerin sayılarla girdiği işlemler (Skaler çarpım)

Matrisleri sayılar ile de işleme sokabiliriz. Bir matris ile bir sayı her bir sayının çarpılmasına **skaler çarpım** adını veriyoruz. Skaler çarpım, bir reel sayı ile matrisin tüm elemanlarını işleme girmesi ile elde edilir.

```python
2*x       # [[ 2.,  4.],
          #  [ 6.,  8.]])

(0.5)*x   # [[ 0.5,  1. ],
          #  [ 1.5,  2. ]])
```

Tabiki numpy matrisler ile sayıların toplama, çıkarma gibi matematik işlemleri ile kullanılmasını da destekliyor. Örneğin bir matris ile bir skaler sayı toplandığında bütün matris elemanları toplanıyor. Bir kaç örnek bakalım:

```python
x+1       #  [[ 2.,  3.],
          #   [ 4.,  5.]]

2*x+1     #  [[ 3.,  5.],
          #   [ 7.,  9.]]
```

## Matrislerin birbirleri üzerinden girdiği işlemler

Tanımladığımız matrisler üzerinde basit matematiksel işlemleri çalıştırabiliriz. Yaptığımız tüm işlemler matrisler üzerinde karşılık gelen yöndeş elemanlar üzerinden yapılacak. Örneğin $$x = \begin{bmatrix} \color{blue}1 & \color{red} 2 \ 3&4 \end{bmatrix}$$ ve $$y = \begin{bmatrix} \color{blue}3 & \color{red}4 \ 5 & 6 \end{bmatrix}$$ olmak üzere, bu matrisler üzerinde toplama, çıkarma gibi işlemlerde ilgili renklere karşılık gelen elemanlar birbirleriyle toplanacak. Yani mavi ile mavi, kırmızı ile kırmızı ve bunun gibi diğer elemanlar..

Kodlar üzerinden gidelim:

```python
print x   #  [[ 1.,  2.],
          #   [ 3.,  4.]] 

print y   #  [[ 5.,  6.],
          #   [ 7.,  8.]]

x+y       #  [[  6.,   8.],
          #   [ 10.,  12.]]

x-y       #  [[-4., -4.],
          #   [-4., -4.]]

x*y       #  [[  5.,  12.],
          #   [ 21.,  32.]]

x/y       #  [ 0.2       ,  0.33333333],
          #  [ 0.42857143,  0.5       ]]

np.sqrt(x) # [[ 1.        ,  1.41421356],    # her bir elemanın karekökü
           #  [ 1.73205081,  2.        ]])
```

Yukarıdaki matematiksel işlemler **np.add( ), np.subtract( ), np.multiply( )** ve **np**.**divide**( ) komutları ile de yapılabilmektedir. Matematiksel semboller daha sezgisel olduğu için kullanılmasını şahsen daha hoş buluyorum.

### Matris çarpımı

Matrisleri ile matrisin çarpılmasına **matris çarpımı** adını veriyoruz. Matris çarpımını lise matematik bilginizden hatırlayacaksınızdır. Eğer bilginizi tazelemek isterseniz sizi [buraya](https://tr.khanacademy.org/math/precalculus/precalc-matrices/multiplying-matrices-by-matrices/a/multiplying-matrices) davet ediyoruz. Bu sayfada matrislerin çarpımı ile alakalı doyurucu bilgiye ulaşabilirsiniz.

Kısaca matris çarpımını hatırlatmak gerekirse:

$$
\begin{bmatrix}
\color{blue}1 &  \color{blue} 2 \\
3&4
\end{bmatrix}

\text{x}

\begin{bmatrix}
\color{red}3&4 \\
\color{red}5&6
\end{bmatrix}
=============

\begin{bmatrix}
? & . \\
. & .
\end{bmatrix}
$$

Sol matristeki mavi vektör ile sağ matristeki kırmızı vektör iç çarpımları yapılarak sonuçtaki matrisin **?** ile belirtilmiş kısmına yerleştirilir. $$(\color{blue}1 , \color{blue}2 \color{black}) \text{ . } (\color{red}3 , \color{red}5 \color{black}) = 1 \text{ x } 3 + 2\text{ x }5 = 13$$ olur. Benzer şekilde aşağıdaki renkli kısımların çarpımı bir sonraki soru işaretli yeri verecektir.

Şimdi diğer soru işaretli yeri bulalım.

$$
\begin{bmatrix}
\color{blue}1 & \color{blue} 2 \\
3&4
\end{bmatrix}

\text{x}

\begin{bmatrix}
3& \color{red}4 \\
5&\color{red} 6
\end{bmatrix}
=============

\begin{bmatrix}
13 & ? \\
. & .
\end{bmatrix}
$$

Bu sefer kırmızı ile işaretlenmiş vektörü kaydırıyoruz. $$(\color{blue}1 , \color{blue}2 \color{black}) \text{ . } (\color{red}4 , \color{red}6 \color{black}) = 1 \text{ x } 4 + 2 \text{ x } 6 = 16$$ işlemini yapıyoruz. Bu iç çarpımın sonucu olan 16'yı sonuç matrisinde ilgili yere yazıyoruz. Sonrasında ise soldaki matristeki alt kısım seçilerek yukarıdaki işlemler tamamlanır. Tüm işlemler bittiğinde sonuç matrisimiz şöyle olur:

$$
\begin{bmatrix}
1 & 2 \\
3 & 4
\end{bmatrix}

\text{x}

\begin{bmatrix}
3 & 4 \\
5 & 6
\end{bmatrix}

\=

\begin{bmatrix}
13 & 16 \\
29 & 36
\end{bmatrix}
$$

## Numpy tarafında matris çarpımı nasıl oluyor?

Bu işlemleri numpy ile **np.dot( )** metodu ile yapabiliriz. Önce matrislerimizi tanımlayalım, ardından metodu kullalım.

```python
x = np.array([[1,2],[3,4]], dtype=np.float64)
y = np.array([[3,4],[5,6]], dtype=np.float64)

x.dot(y)    # [[13, 16],
            #  [29, 36]]
```

**np.dot( )** metodunu biraz daha farklı yönleriyle görmek istersek, bunun 3 farklı şekilde çalışabildiğini görürüz. Bunlar:

1. matris, matris çarpımı
2. vektör, vektör çarpımı
3. matris, vektör çarpımı

**Madde 1) matris matris çarpımı**nı zaten yukarıdaki kod örneğinde görmüştük.

**Madde 2) vektör vektör çarpımı**ndan bahsedelim biraz. İki vektör çarpıldığında bunların iç çarpımını alıyoruz. Hani biraz önceki matris çarpımında satır ve sütun vektörlerinin iç çarpımı gibi. Örneğin $$\[1 , 2] \text{ . } \[3 , 5] = 1 \text{ x } 3 + 2 \text{ x } 5 = 13$$ çarpımını numpy ile yapalım.

```python
v = np.array([1,2])
w = np.array([3,5])

# vektörlerin iç çarpımı
v.dot(w)    # 13
```

**Madde 3) matris vektör çarpımı**ndan bahsedelim son olarak. örnek verelim. Burası vektörün

```python
x = np.array([[1,2],[3,4]])

w.dot(x)    # [18 26]
```

Son yaptığımız kısmı açıklama gerekirse:

Burada esasen $$\begin{bmatrix} 3&5 \end{bmatrix}$$ vektörü ile$$\begin{bmatrix} 1 & 2 \ 3 & 4 \end{bmatrix}$$matrisi ile çarpılıyor. Bunlar da içinde 2 adet iç çarpımı barındırıyor:

1. $$\[3 , 5] \text{ . } \[1 , 3] = 3 \text{ x } 1 + 5 \text{ x } 3 = 18$$
2. $$\[3 , 5] \text{ . }  \[2 , 4] = 3 \text{ x } 2 + 5 \text{ x } 4 = 26$$&#x20;

Dolayısıyla sonuç olarak içeriği $$\begin{bmatrix} 18&26 \end{bmatrix}$$ olan yeni bir vektör elde ediyoruz.
