Numpy Ders 1

Öncelikle numpy paketimizi yükleyelim.

In [1]:
import numpy as np

np.array komutu ile bir numpy listesi (array) oluşturalım.

In [2]:
np.array([1, 2, 3, 4])
Out[2]:
array([1, 2, 3, 4])

Şimdi bu listeye x diyelim.

In [3]:
x = np.array([1, 2, 3, 4])

Unutmayalım: Python'da 1. elemanın indeksi 0'dır.

In [4]:
x[0]
Out[4]:
1

Negatif indeksle sondaki elemanlara ulaşabiliriz.

In [5]:
x[-1]
Out[5]:
4
In [6]:
x[-2]
Out[6]:
3

Birden çok elemanı : yardımıyla seçebiliriz.

In [7]:
x[1:3] # 1. indeksteki eleman dahil 3. indeksteki eleman haric
Out[7]:
array([2, 3])

Sıralı bir array oluşturmak için np.arange komutundan yararlanabiliriz.

In [8]:
np.arange(0, 20, 2) # 0'dan 20'ye 2ser atlayarak olusturulan tam sayi listesi
Out[8]:
array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])
In [9]:
np.arange(20, 0, -1) # 20'den 0'a geriye dogru giden tamsayi listesi, 20 haric 0 dahil.
Out[9]:
array([20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10,  9,  8,  7,  6,  5,  4,
        3,  2,  1])
In [10]:
np.arange(20,0, -3)
Out[10]:
array([20, 17, 14, 11,  8,  5,  2])
In [11]:
np.linspace(0, 1, 5)
Out[11]:
array([0.  , 0.25, 0.5 , 0.75, 1.  ])

Jupyter notebook'ta ? ile komut yardımı alabiliriz.

In [12]:
np.linspace?

np.linspace komutunun yardımından da görebileceğimiz gibi bu komutun iki zorunlu girdisi, ve bir takım opsiyonel girdileri var. Eğer bu komutu ikiden az girdiyle çalıştırmak istersek hata verir.

In [13]:
np.linspace(1)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-13-52d2cdf7bea9> in <module>()
----> 1 np.linspace(1)

TypeError: linspace() missing 1 required positional argument: 'stop'

np.linspace komutunda aralıkta toplam kaç nokta seçeceğiniz varsayımsal (default) olarak 50'dir. Eğer bunu değiştirmek isterseniz belirtmeniz gerekiyor.

In [14]:
np.linspace(0, 1)
Out[14]:
array([0.        , 0.02040816, 0.04081633, 0.06122449, 0.08163265,
       0.10204082, 0.12244898, 0.14285714, 0.16326531, 0.18367347,
       0.20408163, 0.2244898 , 0.24489796, 0.26530612, 0.28571429,
       0.30612245, 0.32653061, 0.34693878, 0.36734694, 0.3877551 ,
       0.40816327, 0.42857143, 0.44897959, 0.46938776, 0.48979592,
       0.51020408, 0.53061224, 0.55102041, 0.57142857, 0.59183673,
       0.6122449 , 0.63265306, 0.65306122, 0.67346939, 0.69387755,
       0.71428571, 0.73469388, 0.75510204, 0.7755102 , 0.79591837,
       0.81632653, 0.83673469, 0.85714286, 0.87755102, 0.89795918,
       0.91836735, 0.93877551, 0.95918367, 0.97959184, 1.        ])

Opsiyonel argümanları ya sırasına göre girmemiz ya da çağırırken opsiyon isimlerini belirtmemiz gerekir. Normalde np.linspace komutunun 3. argümanı opsiyonel girdi olan numdur. Bu değişken aralıkta toplam kaç nokta seçileceğini söyler. Eğer komutu seçerken opsiyon isimlerini belirtirsek, ilk iki zorunlu girdiden sonraki girdileri çağırma sırası önemli olmaz. Ama eğer opsiyon ismini belirtmeden komutu çağırırsanız, opsiyonların girdilerin çağrılma sırası önemlidir.

In [15]:
np.linspace(0,1,endpoint=False, num=5)
Out[15]:
array([0. , 0.2, 0.4, 0.6, 0.8])
In [16]:
np.linspace(0,1,False, 5)
Out[16]:
array([], dtype=float64)
In [17]:
np.linspace(0, 1, endpoint=False)
Out[17]:
array([0.  , 0.02, 0.04, 0.06, 0.08, 0.1 , 0.12, 0.14, 0.16, 0.18, 0.2 ,
       0.22, 0.24, 0.26, 0.28, 0.3 , 0.32, 0.34, 0.36, 0.38, 0.4 , 0.42,
       0.44, 0.46, 0.48, 0.5 , 0.52, 0.54, 0.56, 0.58, 0.6 , 0.62, 0.64,
       0.66, 0.68, 0.7 , 0.72, 0.74, 0.76, 0.78, 0.8 , 0.82, 0.84, 0.86,
       0.88, 0.9 , 0.92, 0.94, 0.96, 0.98])
In [18]:
np.logspace(0, 6, 7) # logspace komutu ile bir araligi esit logaritmik araliklara boleriz
Out[18]:
array([1.e+00, 1.e+01, 1.e+02, 1.e+03, 1.e+04, 1.e+05, 1.e+06])

Burada e+00 = 10 üzeri 0, e+01 = 10 üzeri bir 1, vs.

Bir aralık üzerindeki düzgün dağılımda, o aralıktaki eşit uzunluktaki her alt aralık eşit olasılığa sahiptir.

In [19]:
np.random.random((3, 3)) # 3 x 3 luk [0, 1] arasinda duzgun dagilima gore rastgele bir matris
Out[19]:
array([[0.05439271, 0.07017104, 0.03636676],
       [0.78845619, 0.58400213, 0.22393915],
       [0.52362779, 0.71635487, 0.28407473]])
In [20]:
np.random.random((3, 3)) # komutu tekrar calistirirsak yeni rastgele sayilar veriyor.
Out[20]:
array([[0.57390223, 0.55513826, 0.22293184],
       [0.47060015, 0.54440902, 0.70236319],
       [0.95031288, 0.46931609, 0.10474745]])

1.60 merkezli (beklenen degerli) ve 0.10 standart sapmali normal dagilima gore rastgele 3 x 2 lik matris. Normal dağılımda rastgele seçilen değerler beklenen değere yakın olması daha olasıdır. Rastgele bir değerin merkezden 1 standart sapma uzak olma olasılığı %32, 2 standart sapmadan uzak olma olasılığı %5, 3 standart sapmadan uzak olma olasılığı %0.3 olur.

In [21]:
np.random.normal(1.60, 0.10, (3, 2)) 
Out[21]:
array([[1.45827313, 1.56986894],
       [1.5694932 , 1.34443591],
       [1.70948712, 1.54781233]])
In [22]:
np.random.randint(0, 10, (3, 4)) # 3 x 4 luk [0, 10) araligindan tamsayi matrisi
Out[22]:
array([[5, 3, 5, 9],
       [3, 0, 7, 1],
       [8, 8, 7, 6]])
In [23]:
np.eye(3) # 3 x 3 luk birim matris
Out[23]:
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])