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)
dizimiziarr.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
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
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)
Bağımsız kopya (copy)
|
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.
- Python 117 - Numpy 2 / 11.07.2021
- Python 116 - Pythonu online ve kütüphaneleriyle birlikte kullanmak / 04.07.2021
- Python 115 - Pythonda Kütüphaneler ve NumPy / 27.06.2021
- Python 114 - Alıştırmalar / 20.06.2021
- Python 113 - String İşlemleri / 13.06.2021
- Python 112 - For ve While döngüleri / 30.05.2021
- Python 111 - Özet / 23.05.2021
- Python 110 - Fonksiyonlar / 29.03.2021
- Python 109 - Slicing / 28.02.2021