02. Numpy: Veri Tipleri, Temel Metotlar, Temel İşlemler, Evrensel Fonksiyonlar ve Array işlemleri

Bu bölümde öncelikle kullanılabilecek veri tipleri ve yapısal veri hakkında bilgi verilecektir. Ardından temel metotlar, property’ler, temel işlemler, evrensel fonksiyonlar ve array işlemleri hakkında basit örneklerle gösterilecektir.

02.01. Veri tipleri (Data Types)

Numpy, Python’dan farklı olarak 16 farklı veri tipini destekler. (_bool, int_, intc, intp, int8, int16, int32, int64, uint8, uint16, uint32, uint64, float_, float16, float32, float64, complex_, complex64, complex128)

“_” ile biten veri tipleri o veri tipinin en yüksek değerinin kısa halidir. Örneğin float_ için float64 değeridir. Ayrıca int8, int16, int32, int64 yerine sırasıyla  ‘i1’, ‘i2′,’i4’ vb. string’leri de kullanılabilir.

#int8, int16, int32, int64 can be replaced by equivalent string ‘i1’, ‘i2′,’i4’, etc.

Yapısal veri tipleri de yapılabilir. Yapısallık demek veri tipinin yanına isminin yazılmasıdır. Örneğin,

Şimdi bir kaç property ve metodu daha inceleyelim.

02.02. Temel metotlar ve property’ler

Bu bölümü okumadan önce property ve değişken kavramlarının farkını bilmeyen öğrenciler, öncelik linkteki yazıyı okumalarını tavsiye ederim. Property kelimesinin de Türkçe’ye çevrildiğinde anlamını yitirdiği için property şeklinde kullanacağım. Öncelikle arange ve reshape metotlarını ile bir dizi oluşturacağız. Ardından shape, ndim, dtype.name, itemsize property’leri sonuçlarını inceleyeceğiz.

arange komutu aslında range komutunun modifiye edilmiş halidir. Python’da range kullanımı hatırlayacak olursak başlangıç, bitiş ve adım değerleri parametre olarak alabiliyordu. Bitiş değeri zorunlu iken başlangıç ve adım değerleri seçimlik idi. Ayrıca, başlangıç ve adım belirtilmediğinde sırasıyla 0 ve 1 değerlerini alıyordu. Otomatik dizi oluşturma diğer bir metot “linspace” metodudur. Örneğin,

linspace ilk iki parametre başlangıç ve bitiş değerlerini verirken, son parametre ise eleman sayısını verir. Bu eleman sayısına göre sayılar ardışık olarak oluşturulur. Ayrıca linspace ile oluşan tüm değerleri tek bir fonksiyondan geçirip, tekrar hesaplatabilirsiniz. Örneğin,

Diğer bir yaratma yöntemi logspace’tir. İsminden de anlaşılacağı gibi düzenli bir log havuzu oluşturma için kullanılır. Örneğin,

base’in defult değeri 10’dur. Ancak ben burada iki tabanında oluşturdum. Bu örneklerde metotlar basitçe verilmiştir. Bu metotların birçok parametresi olduğunu unutmayalım.

Büyük bir array görüntülerken otomatik olarak “…” ile array görüntüsü azaltılır. Örneğin,

Tüm değerleri görmek isterseniz setprintoption property kapatabilirsiniz. Örneğin,

Bu durumdaki çıktıları vermiyorum 🙂

02.03. Temel işlemler

Aritmetiksel operatörleri direkt dizilerde kullanabilirsiniz. Örneğin,

Ancak, matrix çarpımı yaparsanız sonuç yanlış olacaktır. Bu durumda matrix çarpımı için @ veya dot metodu kullanılır.

Bu arada += and *= kullanarak mevcut bir array üzerine de sonuçlar yazılabilir.

Ancak a += b hata verir. Çünkü Numpy float + int otomatik float’a çevirebilir ama int + float tekrar bir int içine atamaz. Örneğin,

Python değişkenler konusunda esnek olsa da Numpy’de veri tiplerine ve dizi boyutlarına dikkat etmeniz gerekmektedir. Matris birleştirme yapabilir, hatta complex bir matris oluşturabiliriz. Örneğin,

Numpy, array üzerinde toplama (sum), minimum (min) veya maksimum (max) gibi işlemler rahat yapılır.

axis parametresi ile satır veya sütunlar üzerine işlem yapabilirsiniz. Örneğin,

02.04. Evrensel fonksiyonlar

Numpy sin, cos, exp ve benzeri bilinen matematiksel fonksiyonlar için metotlar sağlar. Bu fonksiyonlara evrensel fonksiyonlar (ufunc) adı verilir. Bu metotlar bir array’dan fonksiyon ile başka bir array’a sonuç olarak aktarılır. Örneğin,

Diğer fonksiyonlar: all, any, apply_along_axis, argmax, argmin, argsort, average, bincount, ceil, clip, conj, corrcoef, cov, cross, cumprod, cumsum, diff, dot, floor, inner, inv, lexsort, max, maximum, mean, median, min, minimum, nonzero, outer, prod, re, round, sort, std, sum, trace, transpose, var, vdot, vectorize, where…

02.05. Array işlemleri

Tek boyutlu ve çok boyutlu bir array’lerde verilere ulaşma, belli bir veri grubunu çekme ve array üzerinde dolaşma örneklerine bakalım.

Python List konusunu bilen bir öğrenci için yukarıdaki örnekler çok tanıdık gelmiştir. Güncelleme işlemi klasik bir array’da olduğu gibidir. Numpy toplu güncellemeye de destek verir. Şöyle ki:

Tek boyutlu bir dizi aşağıdaki şekilde dolaşabiliriz.

Şimdi çok boyutlu dizilere bakalım. Çok boyutlu bir dizi manuel de oluştur, ancak farklı bir kullanım olması için öncelikle bir metot ile oluşturacağız.

fromfunction metodu f fonksiyonuna sayıları gönderir. (5, 4) dizinin boyutunu verir. Örneğin çok boyutlu dizideki [1, 1] değeri f fonksiyonu ile hesaplandığında 10*1+1 ile 11 değeri bulunur.

Şimdi 3 boyutlu dizi yapalım ama bu kez manuel tanımlayalım.

Şimdi de bir döngü ile verileri dolaşalım. Örneğin,

Tüm elemanları teker teker dolaşmak “flat” özelliği kullanılabilir. Örneğin,