NumPy Nedir? Python NumPy Kütüphanesinin Kullanımı
NumPy, Python programlama dilinde bilimsel hesaplamalar ve veri analizi için kullanılan güçlü bir kütüphanedir. NumPy kullanılarak Python'da veri manipülasyonu ve matematiksel işlemler verimli bir şekilde yapılabilmektedir.
Erdoğancan Yüksel
8 dakika 11 saniye okuma süresi
NumPy Nedir? Python NumPy Kütüphanesinin Kullanımı
Erdoğancan Yüksel
8 dakika 11 saniye okuma süresi
NumPy, Python programlama dilinde bilimsel hesaplamalar ve veri analizi için kullanılan güçlü bir kütüphanedir. NumPy kullanılarak Python'da veri manipülasyonu ve matematiksel işlemler verimli bir şekilde yapılabilmektedir.
NumPy Nedir?
NumPy, dizilerle çalışmak için oldukça yaygın olarak kullanılan verimli bir Python kütüphanesidir. NumPy (Numerical Python) çok boyutlu diziler ve matrisler üzerinden matematiksel işlemler yapabilmemizi sağlayan ve bu işlemlerin çıktılarını oldukça hızlı bir şekilde sunan bir Python kütüphanesidir.
Python kullanarak mevcutta diziler üzerinde işlemler yapılabilmektedir fakat bu işlemler NumPy ile yapıldığında 50 kata kadar daha hızlı sonuçlandırılabilmektedir. NumPy'da dizi nesneleri ndarray olarak adlandırılmaktadır. NumPy dizileri, listelerden farklı olarak bellekte sürekli bir yerde saklanmaktadır. Bu sayede dizi elemanlarına çok verimli bir şekilde erişilebilir ve değiştirilebilir. NumPy bir Python kütüphanesidir. Kısmen Python ile yazılmış olsa da hızlı hesaplama gerektiren kısımların çoğu C veya C++ ile yazılmıştır ve doğrudan Python dilinin bir parçası değildir. Bu nedenle NumPy kütüphanesinin ayrıca kurulması ve program içerisinde tanımlanması gerekmektedir.
NumPy Kurulumu
Komut sistemini açtıktan sonra ve aşağıdaki kodu komut satırına yazıyoruz. Kurulumun sağlanması için bilgisayarda Python'ın yüklü olması gerekmektedir.
pip install numpy
Eğer bilgisayarda Anaconda yüklü ise ve NumPY kütüphanesi burada kullanılmak isteniyor ise aşağıdaki komut Anaconda Prompt üzerinden çalıştırılmalıdır.
conda install numpy
NumPY Kütüphanesinin Tanımlanması
NumPy kütüphanesi Python projelerinde aşağıdaki şekilde tanımlanabilmektedir:
import numpy
Diğer bir tanımlama şekli de en yaygın şekilde kullanılan np takma adı ile tanımlanmasıdır:
import numpy as np
NumPy Dizisi Oluşturma
NumPy dizilerinde dizi nesneleri ndarray olarak tanımlanmaktadır. array() fonksiyonu kullanılarak NumPy ndarray nesnesi oluşturulabilmektedir.
Kod örneği:
import numpy as np
array = np.array([1,2,3,4,5])
print(array)
# Output:
[1 2 3 4 5]
Çok boyutlu diziler oluşturmak için kod örneği:
import numpy as np
#2 boyutlu dizi örneği:
array2Dimension = np.array([[1, 2], [3, 4]])
print(array2Dimension)
Output:
[[1 2]
[3 4]]
#3 boyutlu dizi örneği:
array3Dimension = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(array3Dimension)
# Output:
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
Dizilerde boyut sayısını bulmak için ndim özelliği kullanılmaktadır:
import numpy as np
array1Dimension = np.array([1,2,3,4,5])
array1Dimension.ndim
# Output:
1
array2Dimension = np.array([[1, 2], [3, 4]])
array2Dimension.ndim
# Output:
2
array3Dimension = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
array3Dimension.ndim
# Output:
3
Çok boyutlu diziler tanımlamak için ise ndmin özelliği kullanılmaktadır:
import numpy as np
nDimensionArray = np.array([1,2,3,4], ndmin = 3)
nDimensionArray
Output:
array([[[1, 2, 3, 4]]])
Bir dizinin veri türünü kontrol etmek için ise dtype özelliği kullanılmaktadır:
import numpy as np
intArray = np.array([1, 2, 4, 5, 6])
stringArray = np.array(["Barış", "Can", "Emre"])
floatArray = np.array([1.25, 2.35, 4.56])
booleanArray = np.array([True, False, False, True])
intArray.dtype
# Output:
dtype('int64')
stringArray.dtype
# Output:
dtype('<U5')
floatArray.dtype
# Output:
dtype('float64')
booleanArray.dtype
# Output:
dtype('bool')
Bir dizinin satır ve sütun sayısını bulmak için ise shape özelliği kullanılmaktadır:
import numpy as np
array1 = np.array([1, 2, 3, 4, 5])
array2 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
array1.shape
# Output:
(5,)
array2.shape
# Output:
(2, 4)
NumPy arange() Fonksiyonu
Python'daki range fonksiyonuna benzemektedir. Belirtilen aralıkta eşit aralıklı değerler döndürmektedir. Fonksiyon yapısı arange(start,stop,step) şeklindedir. Başlangıç değeri diziye dahil edilirken bitiş değeri dahil edilmez. Belirtilen başlangıç, bitiş ve aralıklara uygun dizide eleman yok ise boş array dönmektedir. Kod örneği:
import numpy as np
array1 = np.arange(5)
array1
# Output:
array([0, 1, 2, 3, 4])
array2 = np.arange(5, 10)
array2
# Output:
array([5, 6, 7, 8, 9])
array3 = np.arange(0, 20, 6)
array3
# Output:
array([ 0, 6, 12, 18])
np.arange(4,1,20)
# Output:
array([])
NumPy random() Fonksiyonu
random() fonksiyonu belirtilen adet ve boyutta rastgele sayılar üretir. Üretmek istediğimiz sayı tipine göre fonksiyonu çağırabilmekteyiz. Kod örnekleri:
import numpy as np
# 0 ile 1 arasında rastgele ondalık sayı üretir:
np.random.random(4)
# Output:
array([0.0470988 , 0.03309829, 0.01583403, 0.53603268])
# Normal dağılımda rastgele negatif ve pozitif ondalık sayılar üretir:
np.random.randn(8)
# Output:
array([ 1.98291619, 0.9086764 , -0.64685367, 0.20763675, 0.45527383, -0.49146823, -1.84864411, 0.56043281])
# 10 dahil olmamak üzere 1-9 arasındaki rakamlardan bir adet döner
np.random.randint(1, 10)
# Output:
6
# 10 dahil olmamak üzere 1-9 arasındaki rakamlardan beş adet döner
np.random.randint(1, 10, 5)
# Output:
array([9, 5, 7, 4, 3])
NumPy zeros() ve ones() Fonksiyonları
zeros() fonksiyonu belirtilen satır ve sütun sayısına göre 0(sıfır) rakamlarından oluşan array döndürür. ones() fonksiyonu ise 1(bir) rakamlarından oluşan array döndürür. Kod örneği:
import numpy as np
np.zeros(5)
# Output:
array([0., 0., 0., 0., 0.])
np.zeros((2, 3))
# Output:
array([[0., 0., 0.],
[0., 0., 0.]])
np.ones(3)
# Output:
array([1., 1., 1.])
np.ones((2, 6))
# Output:
array([[1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1.]])
NumPy linspace() Fonksiyonu
linspace() fonksiyonu iki değer arasında eşit aralıklı değerler oluşturmaktadır. Adet girilmez ise default adet değeri 50'dir. Kod örneği:
import numpy as np
np.linspace(0,20,6)
# Output:
[1 2 3 4 5]
array([ 0., 4., 8., 12., 16., 20.])
NumPy eye() Fonksiyonu
eye() fonksiyonu girilen değer doğrultusunda birim matris oluşturmaktadır. Kod örneği:
import numpy as np
np.eye(3)
# Output:
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
np.eye(4)
# Output:
array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])
NumPy any() Fonksiyonu
any() fonksiyonu girilen bir şartın dizi içerisinde sağlanıp sağlanmadığını kontrol etmektedir. Kod örneği:
import numpy as np
array = np.array([-5, 1, 3, 4, 8, 10])
np.any(array < 0)
# Output:
True
np.any(array > 10)
# Output:
False
NumPy shape() ve reshape() Fonksiyonları
shape() fonksiyonu dizi boyutlarının uzunluklarını çıktı olarak vermektedir. reshape() fonksiyonu ise diziyi belirlediğimiz değerler doğrultusunda boyutlandırmaktadır. Kod örneği:
import numpy as np
array1D = np.arange(0, 10, 2)
array1D
# Output:
array([0, 2, 4, 6, 8])
np.shape(array1D)
# Output:
(5,)
array2D = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2D
# Output:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
np.shape(array2D)
# Output:
(3, 3)
myNumpyArray = np.arange(30)
myNumpyArray.reshape(5, 6)
# Output:
array([[ 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, 25, 26, 27, 28, 29]])
NumPy max(), argmag() ve min(), argmin() Fonksiyonları
max() fonksiyonu dizinin en büyük elemanını, argmax() ise en büyük elemanın index'ini bulmaktadır. min() fonksiyonu ise dizinin en küçük elemanını, argmin() ise en küçük elemanın index'ini bulmaktadır. Kod örneği:
import numpy as np
array = np.random.randint(0, 30, 10)
array
# Output:
array([16, 28, 25, 4, 26, 24, 14, 13, 15, 10])
array.max()
# Output:
28 # Dizinin en büyük elemanı
array.argmax()
# Output:
1 # 28 dizinin en büyük elemanı olup index'i 1'dir
array.min()
# Output:
4 # Dizinin en küçük elemanı
array.argmin()
# Output:
3 # 4 dizinin en küçük elemanı olup index'i 3'tür
NumPy cumsum() Fonksiyonu
cumsum() fonksiyonu dizi elemanlarını kümülatif olarak toplanmasını sağlamaktadır. Kod örneği:
import numpy as np
array = np.random.randint(0, 30, 10)
array
# Output:
array([16, 28, 25, 4, 26, 24, 14, 13, 15, 10])
array.cumsum()
# Output:
array([ 16, 44, 69, 73, 99, 123, 137, 150, 165, 175])
# [16, (16 + 28), (44 + 25), (69 + 4), (73 + 26), (99 + 24), (123 + 14), (137 + 13), (150 + 15), (165 + 10)]
NumPy copy() Fonksiyonu
copy() fonksiyonu dizi elemanların yeni atanan diziye kopyalanmasını sağlamaktadır. Böylelikle işlem yapılmak istenilen array ile ana array birbirinden bağımsız hale getirilebilir. Kod örneği:
import numpy as np
array = np.arange(0, 15)
array
# Output:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
copyArray = array.copy()
copyArray
# Output:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
np.random.shuffle(copyArray) # copyArray'in elemanlarını rastgele karıştırdık.
copyArray
# Output:
array([ 6, 13, 3, 7, 14, 1, 4, 10, 9, 11, 12, 5, 8, 2, 0])
array
# Output:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
NumPy sqrt() ve square() Fonksiyonları
sqrt() fonksiyonu dizi elemanlarına kök alma işlemi uygulamaktadır. square() fonksiyonu ise dizinin her bir elemanının karesini almaktadır. Kod örneği:
import numpy as np
array = np.arange(1, 15)
array
# Output:
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
np.sqrt(array)
# Output:
array([1. , 1.41421356, 1.73205081, 2. , 2.23606798, 2.44948974, 2.64575131, 2.82842712, 3. , 3.16227766, 3.31662479, 3.46410162, 3.60555128, 3.74165739])
np.square(array)
# Output:
array([ 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196])
NumPy Dizilerinin Indexlenmesi
NumPy'da array elemanlarının indexlenmesi Python'daki liste indexleme ile aynıdır. Kod örneği:
import numpy as np
array = np.arange(0, 15)
array
# Output:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
array[5]
# Output:
5
array[3:5]
# Output:
array([3, 4]) # Üçüncü index'ten dördüncü index'e kadar çıktı verir.
array[3:8]
# Output:
array([3, 4, 5, 6, 7]) # Üçüncü index'ten yedinci index'e kadar çıktı verir.
array[3:8] = -5
array
# Output:
array([ 0, 1, 2, -5, -5, -5, -5, -5, 8, 9, 10, 11, 12, 13, 14]) # Üçüncü index'ten yedinci index'e kadar -5 ataması yapar.
array[:] = 50
array
# Output:
array([50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50])
Bazı veri listelerinde şartı sağlamayan veya şartı sağlayan elemanlara 0 ve 1 ataması yapmak için ise oluşturulan diziler belirli bir şart doğrusunda listelenebilir. Şartı sağlayan elemanlar True , sağlmayan elemanlar ise False olarak geri döndürülmektedir. Kod örneği:
import numpy as np
array = np.random.randint(1, 100, 20)
array
# Output:
array([51, 86, 31, 46, 39, 54, 81, 50, 41, 14, 21, 1, 80, 74, 21, 12, 48,
30, 87, 83])
array > 24
# Output:
array([ True, True, True, True, True, True, True, True, True,
False, False, False, True, True, False, False, True, True,
True, True])
NumPy Dizilerinde Toplama, Çıkarma, Çarpma ve Bölme İşlemleri
NumPy diziler üzerinde matematiksel işlemler yapmayı oldukça kolaylaştırmaktadır. Dizi elemanları üzerinde toplama, çıkarma, çarpma ve bölme işlemli NumPy ile kolaylıkla yapılabilmektedir. Kod örneği:
import numpy as np
array = np.arange(0, 15)
array
# Output:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
array + array
# Output: # Dizi elemanlarını kendisi ile toplar.
array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28])
array + 15
# Output: # Dizinin her bir elemanına 15 ekler.
array([15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29])
array * array
# Output: # Dizinin her bir elemanını kendisi ile çarpar.
array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196])
array * 15
# Output: # Dizinin her bir elemanını 15 ile çarpar.
array([ 0, 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210])
array - array
# Output: # Dizinin her bir elemanını kendisi ile çıkarır.
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
array - 30
# Output: # Dizinin her bir elemanından 30 çıkarır.
array([-30, -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, -16])
array - 1.25
# Output: # Dizinin her bir elemanından 1.25 çıkarır.
array([-1.25, -0.25, 0.75, 1.75, 2.75, 3.75, 4.75, 5.75, 6.75, 7.75, 8.75, 9.75, 10.75, 11.75, 12.75])
array / array
# Warning (from warnings module): # Dizide 0 elemanı olduğu için 0 / 0 uyarısı verir fakat bu duruma rağmen işleme devam eder.
# İlgili bölme işlemini nan olarak diziye ekler.
# Output:
array([nan, 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
array / 2
# Output: # Dizinin her bir elemanını ikiye böler.
array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. , 5.5, 6. , 6.5, 7. ])
Sonuç olarak NumPy Kütüphanesi Python'da diziler ve rastgele sayılar oluşturmak ve bu veriler üzerinde çeşitli işlemler gerçekleştirmek için hızlı ve verimli bir araçtır ve oldukça yaygın olarak kullanılmaktadır.