logo
23 TEMMUZ 2025

Python 115 - Pythonda Kütüphaneler ve NumPy

27.06.2021 00:00:00

Python 115 - Pythonda Kütüphaneler ve NumPy

Merhaba,

Python çok popüler bir dil olmaya devam ediyor ve bu popülerliği onun kullanım alanlarını gitgide genişletiyor. 5-10 Satır kodla sesinizi yazıya çevirebilmek, görüntü işleyebilmek, oyun ya da web sitesi geliştirebilmek, biraz da bu çalışma alanlarında daha önce yapılmış çözümleri içeren hazır modülleri ve kütüphaneleri tanımaktan ve bunların kendi komutlarını ve mantığını öğrenmekten geçiyor. Şu anda 200'ü aşkın başlık içeren şu modül listesine ara sıra göz atmanızda fayda var: py-modindex.html.

Bu listeden bugün incelemek istediğimiz kütüphane NumPy kütüphanesi. Numpy kütüphanesi adını Sayısal Python (Numerical Python) kelimelerinin kısaltmalarından almıştır. Kütüphanenin en önemli özelliği, hızlı matematiksel işlemler yapılabilecek yeni bir veri yapısı olarak dizileri (array) sunmasıdır. Python'un kendi veri yapısında bulunan liste veri yapısına göre oldukça hızlı çalışan Numpy kütüphanesi kullanılarak rastgele sayı üretme, matris çarpımı ve doğrusal cebir işlemleri gibi birçok matematiksel işlemi döngü kullanmadan gerçekleştirmek mümkündür.

Bir kütüphaneye başvuran kodların en başında import komutunu göreceksiniz. Çünkü normalde bu kütüphaneler pythonun içinde yer almıyor ve bir şekilde pythonun bulunduğu ortama yüklenmeleri gerekiyor. Eğer pythonu bilgisayarınıza bir program gibi kurduysanız ve windows ortamındaysanız komut satırına gidip :

    pip install numpy

numpy kütüphanesini kurmuş olursunuz. Ancak bugüne kadarki gibi örneklerimizi online sitelerde denemeye devam edelim diyorsak da numpy kütüphanesinin komutlarını tanıyan şu siteyi de kullanabilirsiniz: paiza.io.

numpy kütüphanesinde ilk olarak rastgele 5 koordinata sahip bir vektörle, 3 satıra 2 satırlık bir matris oluşturalım:

    import numpy as np
    vektör = np.random.randn(5)
    matris = np.random.randn(3,2)

    print(vektör)
    print(matris)

Bu verilerin her ikisi de aslında bir dizi (array) veri türündedir. Kütüphanenin getirdiği kolaylığı anlamak için print(10* matris) ya da print(10* vektör)komutunu uygularsak, matriste ya da vektörde bulunan her değerin 10 ile çarpıldığını görürüz. Deneyin lütfen.

Benzer cebirsel işlemleri çoğaltmak mümkün: print(vektör + vektör) yahut print(matris + 10) yahut print(1 / matris). Örneğin print(matris.T) ile matrisin transpozunu anında almamız mümkün. Hatta np.dot(matris, matris) ifadesini denerseniz doğrudan matris çarpımı yapıldığını göreceksiniz.

Değeri 3'ten büyük elemanların indislerini bulmak için sonuç = vektör > 3 ile yeni bir dizi değişkeni oluşturabilir, bu değerleri print("3'ten büyük elemanlar -->", vektör[sonuç]) ile ekrana yazdırabilirsiniz.

Veri yapısındaki değerlerin türünü öğrenmek için .dtype noktalı ifadesini, matrisin yahut vektörün boyutunu öğrenmek için .shape noktalı ifadesini kullanabiliriz.

    print(vektör.dtype) # dtype('float64') (64 bitlik ondalıklı sayı)
    print(matris.shape) # (3,2)

Normal list verimizi bir diziye dönüştürmek için .array(liste) noktalı ifadesini kullanabiliriz. Ya da doğrudan mesela d1 adında bir dizi değişkeni tanımlamak istiyorsak d1 = np.array([5.5,9,10]) ifadesini kullanabiliriz. Hatta hepsi sıfır olan 7 boyutlu bir dizi oluşturmak için np.zeros(7) yazabilmek de büyük bir kolaylık. np.ones(5) ne yapar siz tahmin edin.

Farklı boyutlarda dizi oluşturmak için iç içe parantezler kullanabilir, dtype parametresiyle dizi elemanlarının veri türünü de verebiliriz: np.array([(3.5,8,11), (4,7,9), (2,2,1.1)], dtype=float).

Normal range() fonksiyonuyla hatırlayın ardışık sayılardan oluşan listeler oluşturabiliyorduk. Aynı şekilde np.arange() fonksiyonuyla da ardışık sayılardan oluşan diziler oluşturabiliriz: np.arange(1,11)

Dizideki elemanların türünü .astype(np.float64) benzeri bir komutla değiştirebiliriz. Bir diziye yeniden boyutlandırmak için .reshape(3,4) ifadesini kullanabiliriz.

İstatistiksel İşlemler

Bir dizinin ortalama değerini bulmak için .mean() ifadesini, elemanlarının toplamını bulmak için .sum() ifadesini, satırların ortalaması için .mean(1) ifadesini, sütunların ortalaması için .mean(0) ifadesini kullanabiliriz. .sort() ile elemanları küçükten büyüğe sıralayabilir, birden fazla eleman varsa benzersiz elemanları almak için np.unique(dizi-ismi) ifadesini kullanabiliriz.

np.save("dosya adı",dizi-ismi) ile bir diziyi bilgisayarınıza kaydedebileceğiniz gibi, np.load("dosya adı") ile kaydedilmiş bir diziyi pythona geri yükleyebilirsiniz.

Evet yine biraz zorladık sınırları. Denemelerinizi NumPy kütüphanesini de içeren aşağıdaki linkten yapabilirsiniz. Tekrar görüşmek dileklerimle.

Yorumlar
Yorum bulunmuyor.
Yorumlarınızı paylaşın

--
 
Nahit Taşpınar / diğer yazıları
Gazze'de bir grup gazeteci açlık grevine başladı
"En küçük çocuk yemek yiyinceye kadar"
Soykırımcı İsrail'in bakanı Katz'dan 'Gazze' açıklaması
"Savaş hedeflerine çok yaklaştık"
İsrail ordusu, Batı Şeria'da iki hastaneyi kuşattı
Nablus kentine baskın düzenlendi
Ateşkesi ihlal eden İsrail, baskı yapılan Lübnan!
Hizbullah'ın silah bırakması isteniyor
Memleket Partisi resmen kapatıldı
Karar oy çokluğuyla alındı
Fidan, El Salvadorlu mevkidaşı ile basın toplantısında konuştu
"İsrail, Suriye'yi bölmeyi amaçlamaktadır"
İslam devletleri, Gazze'yi ölüme terk etti
Açıklanan son can kaybı 59 bin 106
Finansal kesim dışındaki firmaların net döviz açığı arttı
Kısa vadeli yükümlülüklerin payı yüzde 38
Bedevi Araplar tahliye ediliyor
Süveyda İsrail işgaline hazır hale getirildi
İnsanlığın dip noktası
Gazze açlıktan ölüyor
Böyle giderse iflaslarda patlama yaşanacak!
Sanayide işler kesat mı kesat!
Bankalara sert eleştiri!
Tekstil ve hazır giyimde konkordato furyası
Gelecek ve DEVA eriyor
Altılı Masa hükümete çalışıyor
İşte nedeni?
Kartlı ödemeler Haziranda düştü
25 ülke İsrail'i Gazze'de ateşkese çağırdı
ABD büyükelçisi bu çağrıyı 'iğrenç' buldu
Gazze'de bir grup gazeteci açlık grevine başladı
"En küçük çocuk yemek yiyinceye kadar"
Soykırımcı İsrail'in bakanı Katz'dan 'Gazze' açıklaması
"Savaş hedeflerine çok yaklaştık"
123456789101112131415
Gazze'de bir grup gazeteci açlık grevine başladı
"En küçük çocuk yemek yiyinceye kadar"
Soykırımcı İsrail'in bakanı Katz'dan 'Gazze' açıklaması
"Savaş hedeflerine çok yaklaştık"
İsrail ordusu, Batı Şeria'da iki hastaneyi kuşattı
Nablus kentine baskın düzenlendi
Ateşkesi ihlal eden İsrail, baskı yapılan Lübnan!
Hizbullah'ın silah bırakması isteniyor
Memleket Partisi resmen kapatıldı
Karar oy çokluğuyla alındı
Fidan, El Salvadorlu mevkidaşı ile basın toplantısında konuştu
"İsrail, Suriye'yi bölmeyi amaçlamaktadır"
İslam devletleri, Gazze'yi ölüme terk etti
Açıklanan son can kaybı 59 bin 106
Finansal kesim dışındaki firmaların net döviz açığı arttı
Kısa vadeli yükümlülüklerin payı yüzde 38
Bedevi Araplar tahliye ediliyor
Süveyda İsrail işgaline hazır hale getirildi
İnsanlığın dip noktası
Gazze açlıktan ölüyor
Böyle giderse iflaslarda patlama yaşanacak!
Sanayide işler kesat mı kesat!
Bankalara sert eleştiri!
Tekstil ve hazır giyimde konkordato furyası
Gelecek ve DEVA eriyor
Altılı Masa hükümete çalışıyor
İşte nedeni?
Kartlı ödemeler Haziranda düştü
25 ülke İsrail'i Gazze'de ateşkese çağırdı
ABD büyükelçisi bu çağrıyı 'iğrenç' buldu
Gazze'de bir grup gazeteci açlık grevine başladı
"En küçük çocuk yemek yiyinceye kadar"
Soykırımcı İsrail'in bakanı Katz'dan 'Gazze' açıklaması
"Savaş hedeflerine çok yaklaştık"
logo

Beşyol Mah. 502. Sok. No: 6/1
Küçükçekmece / İstanbul

Telefon: (212) 624 09 99
E-posta: internet@yenimesaj.com.tr gundogdu@yenimesaj.com.tr


WhatsApp iletişim: (542) 289 52 85


Tüm hakları Yeni Mesaj adına saklıdır: ©1996-2025

Yazılı izin alınmaksızın site içeriğinin fiziki veya elektronik ortamda kopyalanması, çoğaltılması, dağıtılması veya yeniden yayınlanması aksi belirtilmediği sürece yasal yükümlülük altına sokabilir. Daha fazla bilgi almak için telefon veya eposta ile irtibata geçilebilir. Yeni Mesaj Gazetesi'nde yer alan köşe yazıları sebebi ile ortaya çıkabilecek herhangi bir hukuksal, ekonomik, etik sorumluluk ilgili köşe yazarına ait olup Yeni Mesaj Gazetesi herhangi bir yükümlülük kabul etmez. Sözleşmesiz yazar, muhabir ve temsilcilere telif ödemesi yapılmaz.