NumPy, Python programlama dünyasında güçlü ve yaygın olarak kullanılan bir kitaplıktır. Yüksek performanslı, çok boyutlu bir dizi nesnesi ve bu dizilerle çalışmak için araçlar sağlar. Böyle bir özellik, gerçekleştirme yeteneğidir. hareketli pencere hesaplamaları numpy kütüphanesini kullanarak. Bu yazıda, numpy kütüphanesini kullanarak hareketli pencere hesaplamalarını inceleyeceğiz ve bu teknik kullanılarak çözülebilecek bir problemin çözümünü sunacağız. Ayrıca kodun adım adım açıklamasını sağlayacağız ve bu süreçte yer alan ilgili kitaplıkları ve işlevleri tartışacağız.
Hareketli Pencere Hesaplamalarını Anlama
Kaydırma penceresi hesaplamaları , finans, sinyal işleme ve meteoroloji gibi alanlarda veri analizinde yaygın olarak kullanılan bir yöntemdir . Bu tekniğin temel fikri, verileri sabit boyutlu, üst üste binen pencerelere bölmek ve ardından bunları sırayla analiz etmektir. Bu, tüm veri kümesi dikkate alındığında görünmeyebilecek kalıpların, eğilimlerin ve anormalliklerin tespit edilmesini sağlar.
Dönen pencere hesaplamalarındaki temel kavram, pencere boyutudur. Pencere boyutu, tek bir hesaplamada kaç veri noktasının dikkate alınacağını belirler. Daha küçük bir pencere boyutu, verilerdeki yerel değişiklikleri hızla toplayan daha hassas bir analizle sonuçlanacaktır. Öte yandan, daha büyük bir pencere boyutu, verilerin daha genelleştirilmiş bir görünümünü sağlayarak varyasyonları yumuşatır.
Çözüm: numpy Kullanarak Yuvarlanan Pencere Hesaplaması
Tek boyutlu bir sayısal veri dizisine sahip olduğumuz ve belirli bir pencere boyutuyla yuvarlanan ortalamayı hesaplamak istediğimiz bir sorunu ele alalım. Bu sorunu çözmek için, giriş verilerini ve pencere boyutunu bağımsız değişken olarak alan ve numpy kullanarak dönen ortalamayı döndüren bir işlev uygulayacağız. İşte çözüm için kod:
numpy'yi np olarak içe aktar
def haddeleme_mean(veri, pencere_boyutu):
eğer window_size <= 0 ise: upgrade ValueError("Pencere boyutu 0'dan büyük olmalıdır") cumsum = np.cumsum(data) cumsum[window_size:] = cumsum[:-window_size] + data[window_size-1:] - data[ :-window_size] cumsum döndürür[window_size - 1:] / window_size [/code]
Kodun Adım Adım Açıklaması
1. İlk önce, Python topluluğunda standart bir kural olan numpy kitaplığını np olarak içe aktarıyoruz.
2. Daha sonra, iki bağımsız değişken alan yuvarlanan_ortalama işlevini tanımlarız: giriş verileri ve pencere boyutu. Girdi verilerinin tek boyutlu bir numpy dizisi olması beklenir ve pencere boyutu 0'dan büyük bir tam sayıdır.
3. Ardından, pencere boyutunun 0'dan büyük olup olmadığını kontrol ederiz. Değilse, uygun bir mesajla bir ValueError oluştururuz.
4. Belirli bir eksen boyunca öğelerin kümülatif toplamını hesaplayan numpy cumsum işlevini kullanarak girdi verilerinin kümülatif toplamını hesaplıyoruz.
5. Ana hesaplama, pencere boyutuna karşılık gelen uygun öğeleri çıkararak ve ekleyerek kümülatif toplam dizisini güncellediğimiz aşağıdaki satırda gerçekleşir. Bu, döngüler veya liste kavrayışları kullanmaya kıyasla daha verimli bir yaklaşımdır çünkü numpy işlemleri performans için vektörleştirilir ve optimize edilir.
6. Son olarak, 'window_size – 1' dizininden başlayarak güncellenmiş kümülatif toplam dizisini pencere boyutuna bölerek hareketli ortalamayı döndürürüz.
Rolling_mean işlevi artık herhangi bir tek boyutlu numpy dizisinde yuvarlanan pencere hesaplamaları yapmak için kullanılabilir.
Benzer Kitaplıklar ve İşlevler
- Pandalar: Python'da veri manipülasyonu ve analizine yönelik bu popüler kitaplık, pandalar DataFrame ve Series nesnelerinde pencere hesaplamalarını yuvarlama işlemini basitleştiren yerleşik bir döndürme yöntemi sağlar.
- Bilim: Numpy üzerine kurulu SciPy kitaplığı, belirli bir pencere boyutuyla hareketli bir ortalama gerçekleştirmek için uniform_filter işlevi gibi sinyal işleme için ek işlevler sunar.
Sonuç olarak, numpy, hareketli pencere hesaplamalarının verimli ve çok yönlü uygulanmasına izin verir. Temel kavramları ve teknikleri anlayarak, verilerini daha iyi analiz edebilir ve gizli kalıpları ve eğilimleri ortaya çıkarabilir. Ayrıca, pandas ve SciPy'nin benzer kitaplıklarından ve işlevlerinden yararlanmak, Python'da hareketli pencere analizinin yeteneklerini daha da geliştirebilir.