# Numpy dizileri oluşturma

Numpy dizileri matematiksel işlemler için önemli kolaylıklar sağlamaktadır. Numpy dizi elemanlarına aynı python dilindeki dizi elemanlarına eriştiğimiz gibi erişebiliriz. Bunun için diğer programlama dilllerine benzer şekilde indekleme mekanizması ile ulaşıyoruz.

Numpy'da diziler ile alakalı bir kaç özelliğe yeri gelmişken değinelim:

* Numpy dizilerinin veri türü *ndarray* dir.&#x20;
* Numpy dizileri tek boyutlu olabildiği gibi, çok boyutlu matrisler de olabilir.
* Python dizilerinden numpy dizileri oluştururken türü (int, float) belirlenebilir.
  * Eğer elle girilmezse değerlerin türüne göre otomatik oluşturulur.

Hatırlanacağı üzere numpy kütüphanesini kullanabilmemiz için bu kütüphaneyi python'a eklememiz gerekiyor. Bunun için import komutunu kullanıyoruz. Numpy genellikle ***np*** kısaltması ile kullanılır. Zorunluluktan ziyade bu bir gelenektir.

Haydi örneklerle ilk numpy kodlarımızı yazmaya başlayalım!

## Tek boyutlu dizi (vektör) oluşturma

Öncelikle tek boyutlu bir numpy dizisi oluşturalım. (Buna vektör de diyebiliriz. Yazı içinde dönüşümlü olarak kullanılacak. ) Bunun için **np.array** metodunu kullanıyor olacağız. Vektör oluştururken python listesini bu metoda parametre olarak veriyoruz.

```python
import numpy as np           # numpy kütüphanesi eklendi 

a = np.array([1, 2, 3, 4])   # tek boyutlu dizi oluşturduk
```

Bu komut şöyle bir tek boyutlu dizi oluşturur. Boyutu 4 ve içeriği sırasıyla şu sayılardan oluşur.

```
┌───┬───┬───┬───┐
│ 1 │ 2 │ 3 │ 4 │
└───┴───┴───┴───┘
└───────────────┘
    a.size (=4)
```

Şimdi dizimizle alakalı bazı detaylara göz atalım.

```python
print a                   # [1 2 3 4]
print a.size              # 4
print type(a)             # "<type 'numpy.ndarray'>" şeklinde türün ne olduğunu yazar
print a.dtype             # int64
```

Gördüğünüz gibi **print** komutu kullanarak dizinin içeriğini yazdırabilir, **size** ile boyutunu öğrenebiliriz. **np.array** ile oluşturduğumuz dizilerin türü numpy.ndarray olarak yazacaktır. Dizimizin veri türüne ise **dtype** ile bakabiliriz.

Şimdi gelin bu dizi değerlerine sırasıyla erişelim

```python
print a[0], a[1], a[2]    # "1 2 3" yazdırır
a[0] = 5                  # dizinin bir elemanı değerini değiştirelim
print a                   # artık "[5, 2, 3, 4]" yazdırır
```

Oluşturduğumuz dizinin boyutlarını **shape** komutu ile öğrenebiliriz. Bu komut tek boyutlu diziler için aşağıdaki çıktıyı üretmektedir. 2. boyut olmadığından bunu virgülden sonra hiç bir eleman olmamasından anlayabiliriz.

```python
print a.shape             # "(4,)"  yazdırır
```

Şimdi sıra geldi 2 boyutlu bir dizi oluşturmaya.

## 2 boyutlu dizi oluşturma

2 boyutlu diziler doğrudan python listeleri ile oluşturulabilir. 2 boyutlu diziye matris terimini de kullanabiliriz.

Aşağıdaki kod parçası 2x3 boyutlarında bir matris oluşturmaktadır. Python iç-içe listelerini kullanarak bunu yapabiliriz. İç-içe listelerdeki ilk eleman 2-boyutlu dizinin ilk satırına denk gelmektedir.

```python
b = np.array([[1.2, 1.5, 3.4], [4, 5, 6]])    # 2 boyutlu dizi oluştur
```

Aşağıdaki özelliklere sahip bir 2 boyutlu dizi oluşturmuş olacağız. Burada farklı olarak 2 boyutlu dizinin veri türü noktalı sayı veri türü olan **float64** olacaktır. Numpy bizim için veri türünü otomatik olarak algıladı ve matrisi float64 türünde oluşturdu.

```
                 shape[1]
                   (=3)
            ┌─────────────────┐
         ┌  ┌─────┬─────┬─────┐  
         │  │ 1.2 │ 1.5 │ 3.4 │  
shape[0] │  ├─────┼─────┼─────┤  
  (=2)   │  │  4. │  5. │  6. │
         └  └─────┴─────┴─────┘
```

Benzer şekilde yine gelin dizimizle alakalı bazı detaylara göz atalım.

```python
print b                      # [[ 1.2  1.5  3.4]
                             #  [ 4.   5.   6. ]]

print b.size                 # 6
print b.dtype                # float64

print b.shape                      # "(2, 3)" yazdırır
print b[0, 0], b[0, 1], b[1, 1]    # "1.2 1.5 4.0" yazdırır
```

Dizinin içeriğini görmek için **print** komutunu kullanabilir, boyutlarına baktığımızda **2x3** olduğunu ve elemanlarına da yine benzer şekilde dizi erişimi yaparak erişebilir ve ekrana yazdırabiliriz. Burada dikkat edilmesi gerekli noktanın: b\[0,1] gibi bir komutta ilk indeksin satırda, ikincisinin de sütun da ilerlediğini ve sol üstteki ilk elemanın 0,0 olduğunu hatırlatmak isterim.
