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 dizi
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.
