Python ile Veri Bilimi -2 Numpy Kütüphanesinin Kullanımı

Python ile Listeler konusunu görmüştük. Listeler birçok alanda kullanışlı olsa da Listeler üzerinde matematiksel işlemler yapmak, analizler yapmak mümkün değildir.

Mesela bir sınıfta öğrencilerin notlarını liste olarak kaydettiğimizi düşünelim.

not1=[100,76,33,87,66]
not2=[23,95,45,100,22]

Şimdi de öğrencilerin notlarının ortalamaları hesaplamaya çalışalım. Bunun için

not1=[100,76,33,87,66]
not2=[23,95,45,100,22]
ortalama=(not1+not2)/2
print(ortalama)

Bu şekilde ortalamarı hesaplamaya çalıştığımızda hata aldığımızı göreceğiz. Çünkü python daki Liste veri türlerinde bu şekilde matematiksel işlem yapmak mümkün değildir.

Numpy kütüphanesi kullanılarak bu sorunların üstesinden gelmiş olurur.

Öncelikle numpy kütüphanesini yüklememiz gerekiyor. Bunun için bilgisayarımızda terminal ekranına aşağıdaki kodu yazıyoruz. (visual studio code içinden terminal bölümüne yazabiliriz)

pip install numpy

veya

Enter e bastıktan sonra kütüphanin kurulumu tamamlanmış olur.

import numpy as np
dizi=[44,33,46,78,99] #normal python dizisi
np_dizi=np.array(dizi) #numpy dizisine çevirme işlemi 

print(np_dizi) #np dizisi
print(type(np_dizi)) #değişkenin tipini yazdır

Yukarıdaki kodun ekran çıktısı

Görüldüğü gibi type ile değişkenin tipine baktığımızda dizinin numpy tipine dönüştüğünü görüyoruz.

Şimdi de yukardaki not ortalamsını hesaplama işlemini numpy kütüphanesi kullanarak yapalım.

import numpy as np

not1=[100,76,33,87,66]
not2=[23,95,45,100,22]
not1_np=np.array(not1)
not2_np=np.array(not2)

ortalama=(not1_np+not2_np)/2
print(ortalama)

Ekran çıktısı

Görüldüğü gibi notların ortalamasını kolay bir şekilde almayı başardık.

Şimdi de ortalaması 70 den büyük olanları yazdıralım

import numpy as np

not1=[100,76,33,87,66]
not2=[23,95,45,100,22]
not1_np=np.array(not1)
not2_np=np.array(not2)

ortalama=(not1_np+not2_np)/2
print(ortalama>70)

Ortalaması 70 den büyük olanların notlarını da göstermek için

import numpy as np

not1=[100,76,33,87,66]
not2=[23,95,45,100,22]
not1_np=np.array(not1)
not2_np=np.array(not2)

ortalama=(not1_np+not2_np)/2
filtre=ortalama<70 #ortalaması 70 den küçük olanlar
print(ortalama[filtre])

Şimdi de sınıfın en yüksek, en düşük ve ortalama notlarını bulalım

import numpy as np

not1=[100,76,33,87,66]
not2=[23,95,45,100,22]
not1_np=np.array(not1)
not2_np=np.array(not2)

ortalama=(not1_np+not2_np)/2
print(ortalama)
ortalamasi_en_yuksek=ortalama.max() #ortalaması en yüksek olan öğrenci
ortalamasi_en_dusuk=ortalama.min() #ortalaması en düşük olan öğrenci
sinifin_ortalamasi=ortalama.mean() #sınıf ortalaması

print(ortalamasi_en_yuksek)
print(ortalamasi_en_dusuk)
print(sinifin_ortalamasi)

Ortalaması sınıf ortalamasından düşük olanları göster

import numpy as np

not1=[100,76,33,87,66]
not2=[23,95,45,100,22]
not1_np=np.array(not1)
not2_np=np.array(not2)

ortalama=(not1_np+not2_np)/2
sinifin_ortalamasi=ortalama.mean() #sınıf ortalaması
filtre=ortalama>sinifin_ortalamasi
print(ortalama[filtre])

Ortalaması sınıf ortalmasından yüksek olanların sayısını bulalım. Numpy kütüphanesinden toplamı bulmak için sum() fonksiyonu kullanılır.

import numpy as np

not1=[100,76,33,87,66]
not2=[23,95,45,100,22]
not1_np=np.array(not1)
not2_np=np.array(not2)

ortalama=(not1_np+not2_np)/2
sinifin_ortalamasi=ortalama.mean() #sınıf ortalaması
filtre=ortalama>sinifin_ortalamasi
print(np.sum(filtre)) #ortalaması sınıf ortalamasından yüksek olanların sayısı 2

Test Amaçlı Numpy Dizilerini Otomatik Oluşturmak

np.arange(1,11) #array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
np.arange(1,11,2)#array([1, 3, 5, 7, 9])
np.linspace(-2,2,21) #-2 ile 2 arası 21 tane eşit aralıklı sayı
np.logspace(0,3,4) #dizideki sayıları 10 nun üssü olarak yazar

Tek Boyutlu Dizilerde Seçme İşlemi

import numpy as np

dizi=np.arange(20) # 0-19 arası 1 er artan dizi oluştur 
print(dizi[:7]) #ilk 7 eleman [0 1 2 3 4 5 6]
print(dizi[10:]) #10. eleman ve sonrası [10 11 12 13 14 15 16 17 18 19]
print(dizi[5:10]) #5 ile 10 arası [5 6 7 8 9]
print(dizi[::3]) #3 er 3 er artarak  [ 0  3  6  9 12 15 18]

Numpy Kütüphanesi Kullanılarak Rastgele Sayı Oluşturmak

import numpy as np

rastgele_sayi = np.random.random()
print ("Rastgele sayı: ", rastgele_sayi)

size paremetresini kullanarak rastgele sayılarımızı bir dizi şeklinde oluşturabiliriz. Aşağıda tek boyutlu 6 adet rastgele sayıdan oluşan bir numpy dizisi oluşturduk.

import numpy as np

rastgele_sayi = np.random.random(size=6)
print ("Rastgele sayı: ", rastgele_sayi)

2 Boyutlu Rastgele Sayılardan Oluşan Numpy Dizisi Oluşturmak

Aşağıdaki kod ile 6 satır ve 3 sütundan oluşan numpy dizisi oluşturabiliriz.

import numpy as np

rastgele_sayi = np.random.random(size=(6,3)) #6 satır, 3 sütun
print (rastgele_sayi)

3 Boyutlu Rastgele Sayılardan Oluşan Numpy Dizisi Oluşturmak

Aşağıdaki kod ile 4 satır, 3 sutündan oluşan numpy dizisinin 2 defa tekrar edilmesini sağlıyoruz.

import numpy as np

rastgele_sayi = np.random.random(size=(2,4,3))
print (rastgele_sayi)

Çok Boyutlu Diziler

Çoğu zaman çok boyutlu dizinler ile çalışmamız gerekebilir. Yukarıdaki örnekler çok boyutlu dizi örnekleriydi. Şimdi de çok boyutlu dizilere biraz daha derinlemesine bakalım.

2 boyutlu dizileri excel tablosuna benzetebiliriz. Satır ve sütunları vardır.

Numpy ile çok boyutlu dizi

Diziyi numpy dizisine çevirelim.

import numpy as np

dizi_cokboyutlu=np.array([
    ["ahmet","mehmet","ali","veli"],
    ["Ayşe","Fatma","Kübra","Zeynep"],
    ["Tarık","İlknur","Sevde","Serpil"]
])

print(dizi[0]) # ahmet yazar
print(dizi_cokboyutlu[1][2]) #Kübra yazar

Numpy kütüphanesi ile otomatik olarak 2 boyutlu dizi oluşturmak için

import numpy as np
dizi=np.arange(20) #20 tane sayı oluştur
matris=dizi.reshape(4,5)#4 satır 5 sütundan oluşan dizi
print(matris)

Çok Boyutlu Dizilerde Seçme İşlemi

import numpy as np
dizi=np.arange(20) #20 tane sayı oluştur
matris=dizi.reshape(4,5)#4 satır 5 sütundan oluşan dizi
print(matris[1:3])

Burada 1. satır ile 3. satır arasını alır. 3. satır dahil değil. (1 ve 2. satırı almış olur)

import numpy as np
dizi=np.arange(20) #20 tane sayı oluştur
matris=dizi.reshape(4,5)#4 satır 5 sütundan oluşan dizi
print(matris[2:3,3:4]) #2. satır 3. sütün

Ekran çıktısı

import numpy as np
dizi=np.arange(20) #20 tane sayı oluştur
matris=dizi.reshape(4,5)#4 satır 5 sütundan oluşan dizi
print(matris[1:3,1:4]) #1 ve 3. satır arası(3 dahil değil) 1 ve 4. sütun arası (4 dahil değil)




import numpy as np
dizi=np.arange(20) #20 tane sayı oluştur
matris=dizi.reshape(4,5)#4 satır 5 sütundan oluşan dizi
print(matris[:3,:5]) #3. satır ve 4. sütuna kadar olan her yer
import numpy as np
dizi=np.arange(20) #20 tane sayı oluştur
matris=dizi.reshape(4,5)#4 satır 5 sütundan oluşan dizi
print(matris[0:3,:]) #0 ve 3. satır arası hepsini ver
import numpy as np
dizi=np.arange(20) #20 tane sayı oluştur
matris=dizi.reshape(4,5)#4 satır 5 sütundan oluşan dizi
print(matris[2,4]) #2. satır ve 4. sütundakini ver 14 verir. 
#print(matris[2][4]) #bu şekilde de yazılır. Yukardakinin aynısı

Dizinin boyutunu öğrenmek için

import numpy as np
dizi=np.arange(20) #20 tane sayı oluştur
matris=dizi.reshape(4,5)#4 satır 5 sütundan oluşan dizi
print(matris.shape) #dizinin boyutunu verir (4,5) sonucunu verir. 

Yayınlayan

Ahmet KADAK

Bilgisayar Öğretmeni & Bilgisayar Mühendisi

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.