NumPy, Arrays

Kategori: Python , 11 Eylül 2019 , JanFranco


NumPy, Python için yazılmış, scientific hesaplamalar için kullanılan, çok boyutlu diziler ile kolay hesaplamalar yapabildiğimiz, makine öğrenmesi, veri madenciliği gibi alanlarda sık kullanılan bir kütüphanedir. Aşağıdaki komut ile kolayca indirilebilir:


pip install numpy
Kütüphaneyi import ederek yazıya başlayalım:


import numpy as np
import anahtar kelimesi ile kütüphaneyi import edebiliriz. as anahtar kelimesi ile yeni bir isim verebiliriz. Zorunlu değildir ancak hemen hemen herkes as np ile kısaltma yapmakta.
NumPy kütüphanesini import ettik. Şimdi 2 boyutlu ve tek boyutlu 2 array tanımlayalım ve array'leri numpy array haline çevirelim ve dizi elemanlarına erişelim:


list_1 = [1, 2, 3]
arr_1 = np.array(list_1)
list_2 = [[10, 20, 30], [40, 50, 60], [70, 80, 90]]
arr_2 = np.array(list_2)
arr_3 = np.array([1, 2, 3])

print(arr_3[1])
print(arr_2[2][2])
>>
2
90
arrange() methodu ile dizi üretebiliriz. İlk iki parametre başlangıç ve bitiş değerleridir. Üçüncü parametre ise artış miktarıdır:


arr_4 = np.arange(0, 100, 3)
print(arr_4)
>>
[ 0  3  6  9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69
 72 75 78 81 84 87 90 93 96 99]
zeros() ve ones() methodu ile sadece 0 veya sadece 1'lerden oluşan diziler tanımlayabiliriz. Parametre olarak boyut değeri alırlar. Tek bir değer girerek tek boyutlu diziler oluşturabilir, demet şeklinde boyut girerek çok boyutlu diziler elde edebiliriz:


arr_5 = np.ones(10)
arr_6 = np.zeros(10)
print(arr_5)
print(arr_6)
>>
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]

arr_7 = np.zeros((2, 2))
print(arr_7)
>>
[[0. 0.]
 [0. 0.]]
eye() methodu ile köşegen matris oluşturabiliriz:


arr_8 = np.eye(6)
print(arr_8)
>>
[[1. 0. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0. 0.]
 [0. 0. 1. 0. 0. 0.]
 [0. 0. 0. 1. 0. 0.]
 [0. 0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 0. 1.]]
linspace() methodu ile bir aralığı bölerek diziler elde edebiliriz. Parametre olarak başlangıç, bitiş değeri ve kaç sayı üretileceğini girebiliriz:


arr_9 = np.linspace(0, 100, 5)
print(arr_9)
>>
[  0.  25.  50.  75. 100.]
randint(), rand() ve randn() methodları ile rastgele sayılar üretebiliriz. randint() methoduna başlangıç ve bitiş değerlerini gireriz ve bu değerler arasında rastgele bir sayı üretiriz. Ek olarak üçüncü bir parametre ile kaç sayı üretileceğini belirleyebiliriz, bu değer demet şeklinde olursa çok boyutlu rastgele diziler de oluşturabiliriz. rand() methoduna sadece boyut bilgisini gireriz, 0-1 aralığında rastgele sayılar üretiriz. randn() methoduna da sadece boyut bilgisi gireriz ve rastgele sayılar üretiriz. randn() methodu rastgele sayılar üretirken Gaussian dağılımını kullanır:


rand_1 = np.random.randint(0, 10)
rand_2 = np.random.randint(1, 10, 5)
rand_3 = np.random.rand(5)
rand_4 = np.random.randn(5)
print(rand_1)
print(rand_2)
print(rand_3)
print(rand_4)
>>
0
[2 4 4 5 4]
[0.09134109 0.89136842 0.85208044 0.58474828 0.34319352]
[-1.13309019  0.15281058  0.15356172  0.61094568 -1.10572314]
reshape() methodu ile arrayleri yeniden boyutlandırabiliriz. 25 elemanlı bir dizi oluşturalım ve reshape() methodu ile bu diziyi 5x5 boyutlu bir matrise çevirelim:


arr_10 = np.arange(25)
print(arr_10)
>>
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]

arr_11 = arr_10.reshape(5, 5)
print(arr_11)
>>
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]]
max() ve min() methodları ile bir dizideki en büyük ve en küçük elemanı bulabilir, argmax() ve argmin() methodları ile bu elemanların kaçıncı indexte olduğunu öğrenebiliriz. sum() ve mean() methodları ile dizideki elemanların toplamını ve ortalamasını alabiliriz:


arr_12 = np.random.randint(1, 100, 10)
print('arr_12 max = {}, min = {}, sum = {}, mean = {}, maxIndex = {}, '
      'minIndex = {}'.format(arr_12.max(), arr_12.min(), arr_12.sum(),
                             arr_12.mean(), arr_12.argmax(), arr_12.argmin()))
>>
arr_12 max = 95, min = 7, sum = 489, mean = 48.9, maxIndex = 9, minIndex = 4


Sonraki Yazı: NumPy, Indexes, Filters
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın