logo
04 ARALIK 2025


Python 117 - Numpy 2

11.07.2021 00:00:00

Python 117 - Numpy 2

Merhabalar,

Önceki hafta değindiğimiz gibi, NumPy dizilerle (array) çalışmak üzere geliştirilmiş bir Python kütüphanesi. Buradaki yeteneklerimizi biraz daha sistematik bir yaklaşımla geliştirmeyi düşünerek bugün NumPy kütüphanesine ikinci ziyaretimizi yapıyoruz.

NumPy da dizi (array) oluşturma

NumPy'da bir dizi oluşturmak için array() fonksiyonu kullanılır. Bu fonksiyona bir list, tuple ya da benzeri bir veri yazıldığında bize bir dizi verecektir. İlk 3 doğal sayıdan oluşan bir listeyi ve ardından tuple'ı NumPy dizisine çevirelim:

  import numpy as np
  arr1 = np.array( [0, 1, 2] )
  arr2 = np.array( (0, 1, 2) )

Otomatik dizi oluşturan fonksiyonlar

np.arange(0,3)  # [0 1 2]  a'dan b-1'e birer artarak
np.zeros(3)     # [0. 0. 0.] 3 adet float 0
np.zeros((2,3)) # [[0. 0. 0.], [0. 0. 0.]] boyut verdik
np.ones(3)      # [1. 1. 1.] 3 adet float 1
np.ones((2,3))  # [[1. 1. 1.], [1. 1. 1.]] boyut verdik
np.eye(2)       # [[1. 0.], [0. 1.]] birim matris
np.linspace(0,3,4) # [0. 1. 2. 3.] a'dan b'ye 4 değer

Random dizi oluşturan fonksiyonlar

np.random.randint(0,9)    # a, b arası rastgele bir sayı üret
np.random.randint(9, size=(2,4))  # 2 satır 4 sütunluk olsun
np.random.randint(0,9,5)  # a, b arası rastgele 5 sayı üret
np.random.rand(5)         # 0, 1 arası rastgele 5 sayı üret
np.random.randn(5)        # -1, 1 arası gauss dağılımlı 5 sayı üret
np.random.choice([2,7,15,26])   # dizideki değerlerden birini seçer
np.random.choice([2,7], size=(2,4))   # 2 satır 4 sütunluk
np.random.choice([0,11], p=[0.2, 0.8], size=(10)) # elemanların seçilme olasılıkları sırasıyla 0.2 ve 0.8 olsun

Dizilerde boyut

Bir dizi, içerdiği dizi sayısı kadar boyuta sahiptir. Yukarıdaki dizilerin hepsi de 1 boyutludur. Bir dizinin elemanı olarak başka bir dizi geldiği anda iç içe bir dizi oluşur.

0-D Diziler

  • Sıfır boyutlu diziler yahut skalerler, bir dizinin temel elemanlarıdır. Örneğin 15 sayısından adı a0 olan sıfır boyutlu bir dizi oluşturmak için şu kod kullanılabilir: a0 = np.array(15).

1-D Diziler

  • En yaygın ve temel dizilerdir, elemanları 0-D dizilerden oluşur. Örneğin 1,2,3 değerlerini içeren 1 boyutlu bir dizi şu şekilde tanımlanabilir: a1 = np.array([1, 2, 3])

2-D Diziler (2. dereceden tensörler)

  • Elemanları 1-D diziler olan dizilerdir. Genellikle bir matrisi ya da 2. dereceden tensörü ifade ederler. Örnek: a2 = np.array([[1, 2, 3], [4, 5, 6]])

3-D Diziler (3. dereceden tensörler)

  • Elemanları 2-D diziler olan dizilerdir. Genellikle bir matrisi ya da 3. dereceden tensörü ifade ederler. Örnek: a3 = np.array([[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]])

  • Dizi ismi nokta ndim ifadesiyle bir dizinin boyutu öğrenilebilir: print(a3.ndim)

  • Dizi ismi nokta shape ile boyut ve eleman sayısı öğrenilebilir.

  • Diziyi tanımlarken ndmin parametresiyle boyut dikte edilebilir. Örneğin adı dz olan 5 boyutlu bir dizi oluşturmak için: dz = np.array([1, 2, 3, 4], ndmin=5)

Diziyi yeniden şekillendirme

  • Dizi ismi nokta reshape ifadesiyle bir dizinin her boyutta kaç elemana sahip olacağını dikte edebiliriz.

  • Örneğin arr = np.arange(0,8) dizimizi arr.reshape(2,4) ile şekillendirdiğimizde 8 skalerlik bir vektörü 2 satıra 4 sütunluk bir matrise çevirmiş oluruz.

  • Benzer şekilde arange(1,13) lük bir diziye .reshape(2,3,2) uygularsak satırları [1,2], [3,4] ve [5,6] olan 3 boyutlu bir matris elde ederiz.

NumPy veri tipleri

  • NumPy kütüphanesini yüklediğimizde, Pythonun temel veri tiplerine ilave olarak bir harfle ifade edilen ekstra veri tipleri kullanıma sunulur.

  • i - integer (tamsayı), b - boolean (mantıksal), u - unsigned integer (işaretsiz tamsayı), f - float (ondalıklı), c - complex float (ondalıklı komplex), m - timedelta (zaman farkı), M - datetime (tarih/ zaman), O - object (nesne), S - string (metin), U - unicode string (evrensel metin), V - fixed chunk of memory for other type (diğer tüm veriler)

Veri tipi bildirerek dizi oluşturma

Tanım sırasında dtype parametresi kullanılarak dizinin istediğimiz veri tipinde olmasını sağlayabiliriz.

  arr = np.array([1, 2, 3, 4], dtype='S')

Dizinin veri tipini değiştirme

Bir dizinin veri tipini değiştirmenin en iyi yolu astype() yöntemiyle onun bir kopyasını almaktır. Yeni veri tipi yukarıdaki harf kısaltmalarıyla verilebildiği gibi f yerine float, i yerine integer gibi de verilebilir.

  arr = np.array([1.1, 2.1, 3.1])
  newarr = arr.astype('i')

Mevcut diziden yeni bir dizi oluşturma

a = np.array( [1,2,3] ) şeklinde bir dizimiz olsun. Bundan 2 türlü kopya oluşturabiliriz. Bağımlı ve bağımsız kopya.

Bağımlı kopya (view)
  • b = a.view() yani a ne ise b de odur. a'nın herhangi bir elemanını ya da elemanlarını, şeklini, boyutunu vs. değiştirdiğimiz anda b de aynı özelliklere ve değerler esahip olacaktır.
Bağımsız kopya (copy)
  • b = a.copy() a.nın bir kopyası alınır ama o andan itibaren a ile b arasında hiç bir bağlantı kalmaz. Yani, a'daki hiçbir değişiklik b'ye yansımaz.

Evet uzmanlık alanları gerçekten uzmanlık istiyor. Geçen hafta Python'u kütüphane desteğiyle birlikte kullanabilmek için 2 farklı yol göstermiştim. Bugünkü dersimizi onlardan biri üzerinde denemeniz çok önemli > Python'u online ve kütüphaneleriyle birlikte kullanmak Numpy 3 yazımızda buluşmak dileklerimle.

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

--
 
Nahit Taşpınar / diğer yazıları
Lula da Silva'dan Trump'a işbirliği teklifi
"ABD'de bulunan Brezilyalı suç örgütü liderlerini gözaltına alalım"
Maduro, Trump'la görüşme yaptığını doğruladı
"Samimi bir havada gerçekleşti"
11. Yargı Paketi, TBMM Adalet Komisyonunda
Teklifin ilk 15 maddesi kabul edildi
İsrail ateşkes ihlalini sürdürüyor
Han Yunus'a hava saldırısı düzenledi
Bordo Mavililer yedeklerle çıktığı maçı rahat kazandı
Ziraat Türkiye Kupası: Trabzonspor: 2 - Vanspor FK: 0
'Cellat CHP'nin geçmişinde'
Erdoğan'dan Özgür Özel'e cellat cevabı
İstanbul'da çete operasyonu
13 şüphelinin 5'inin yaşı 18'den küçük
İmralı heyetinden 'Öcalan' görüşmesine dair açıklama
"Süreçlerin tümünde karşılaşılan bir durum olarak darbe mekaniğine dikkat çekti"
Erdoğan Grup Toplantısı'nda konuştu
'Hadsiz açıklamalar kabul edilemez'
Emeklilerin 5 aylık maaş artışı belli oldu
Toplamda yüzde 11.21'lik zam garantilendi
TÜİK'ten beklenen açıklama geldi
Aylık yüzde 0,87, yıllık yüzde 31,07
ENAG enflasyonu açıkladı
Aylık yüzde 2,13, yıllık yüzde 56,82
Venezuela, ABD'nin talebini uygulayacak
Göçmenler için geri dönüş uçuşları yeniden başlatılacak
İsrail, Batı Şeria'ya yönelik ihlallerini artırdı
Sadece kasım ayında 2 bin 144 saldırı düzenledi
Kremlin'den ABD'li heyetin ziyaretiyle ilgili açıklama
"Ukrayna meselesinin çözümüne ilişkin alınan 4 belge müzakere edildi"
Lula da Silva'dan Trump'a işbirliği teklifi
"ABD'de bulunan Brezilyalı suç örgütü liderlerini gözaltına alalım"
Maduro, Trump'la görüşme yaptığını doğruladı
"Samimi bir havada gerçekleşti"
11. Yargı Paketi, TBMM Adalet Komisyonunda
Teklifin ilk 15 maddesi kabul edildi
İsrail ateşkes ihlalini sürdürüyor
Han Yunus'a hava saldırısı düzenledi
Bordo Mavililer yedeklerle çıktığı maçı rahat kazandı
Ziraat Türkiye Kupası: Trabzonspor: 2 - Vanspor FK: 0
'Cellat CHP'nin geçmişinde'
Erdoğan'dan Özgür Özel'e cellat cevabı
İstanbul'da çete operasyonu
13 şüphelinin 5'inin yaşı 18'den küçük
İmralı heyetinden 'Öcalan' görüşmesine dair açıklama
"Süreçlerin tümünde karşılaşılan bir durum olarak darbe mekaniğine dikkat çekti"
Erdoğan Grup Toplantısı'nda konuştu
'Hadsiz açıklamalar kabul edilemez'
Emeklilerin 5 aylık maaş artışı belli oldu
Toplamda yüzde 11.21'lik zam garantilendi
TÜİK'ten beklenen açıklama geldi
Aylık yüzde 0,87, yıllık yüzde 31,07
ENAG enflasyonu açıkladı
Aylık yüzde 2,13, yıllık yüzde 56,82
Venezuela, ABD'nin talebini uygulayacak
Göçmenler için geri dönüş uçuşları yeniden başlatılacak
İsrail, Batı Şeria'ya yönelik ihlallerini artırdı
Sadece kasım ayında 2 bin 144 saldırı düzenledi
Kremlin'den ABD'li heyetin ziyaretiyle ilgili açıklama
"Ukrayna meselesinin çözümüne ilişkin alınan 4 belge müzakere edildi"
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.