Kurs
Veri bilimi geliştikçe, yaygın kütüphanelerde bazı değişiklikler kaçınılmaz oluyor ve bu kez NumPy kütüphanesi 2.0 sürümüne güncelleniyor. Bu büyük güncelleme Haziran 2024’te yayımlandı ve popüler Python kütüphanesine pek çok yeni özellik ve iyileştirme getiriyor.
Bu kadar büyük bir değişimle birlikte, mevcut kodunuzu uyarlamanızı gerektirebilecek bazı noktalara dikkat etmek gerekiyor.
Bu yazıda, NumPy 2.0’ın neleri içerdiğine, yapılan temel değişikliklere ve NumPy 2.0’a nasıl geçiş yapabileceğinize genel hatlarıyla değineceğiz.
NumPy 2.0’a Giriş
Yılların geri bildirimi ve teknolojik ilerlemeleri üzerine inşa edilen NumPy 2.0, son birkaç yıldaki pek çok sürümden farklı olarak iddialı bir yükseltme.
Kendi yayımlama blog yazılarında güncellenmiş bir API, iyileştirilmiş skaler terfi kuralları, yeni bir DType API’si ve yeni bir string DType, uyumluluk geliştirmeleri ve API standartlarının hizalanmasından bahsediyorlar. Bu sayede kullanıcılar performans ve dokümantasyonda önemli iyileştirmeler fark edecek.
Ancak kütüphanedeki bu kadar büyük bir değişiklikle, yeni sürüm bazı aksamalara da yol açıyor. Örneğin, yeni API ve ABI değişiklikleri geriye dönük uyumlu değil.
Başlıca Yeni Özellikler
Sürüm notlarına göre, NumPy 2.0 önemli değişiklikler sunuyor; öne çıkanlar şöyle:
API ve ABI değişiklikleri
Bu güncellemede API ve ABI (Uygulama İkili Arayüzü) üzerinde çeşitli temizleme değişiklikleri yapıldı.
NEP (NumPy Geliştirme Önerisi) 52’de belirtildiği üzere, NumPy daha yalın ve basit bir API sağlamak için alışıldık geriye dönük uyumluluk yaklaşımından uzaklaşıyor.
Bazı dikkat çekici değişiklikler şunlar:
- Genel ve özel API ayrımı: Modül yapısı kullanılarak, Python için NumPy API’sinde genel ve özel API arasında net bir ayrım getirildi.
- Ad alanı temizliği: Fonksiyonlar, NumPy’yi öğrenmeyi kolaylaştırmak için sadeleştirildi. Daha fazla bilgi için tam kaldırma listesine bakın.
- Niş işlevlerin kullanımdan kaldırılması: Önerilmeyen pek çok fonksiyon ve takma ad kaldırıldı.
- Yeni özel tür: C API için, özel DType oluşturmak üzere yeni bir genel API yayımlandı.
ABI değişiklikleriyle birlikte yeni sürümde kırılmalar olacak. Bu, NumPy C API’sini kullanan paketlerin ikililerini etkileyecek.
Önceki herhangi bir NumPy 1.xx sürümüne karşı derlenenler NumPy 2.0 ile çalışmayacak. Geliştiricilerin önerilerine göre nasıl geçiş yapılabileceğine aşağıda değineceğim. İkili uyumsuzluğu belirten bir ImportError ile karşılaşacaksınız.
Yeni DType API’si ve String DType
NEP 41’te önerildiği gibi, bu 2.0 güncellemesi kullanıcı tanımlı özel veri türlerini StringDType veri türünü kullanarak uygulamak için yeni bir API sunuyor. Bu yeni API, NumPy kullanıcılarının uzun zamandır talep ettiği değişken uzunluklu string veri türleri için yerel destek içeriyor.
Skaler terfi kuralları
İlk olarak NEP 50’de önerilen NumPy’deki skaler terfi kuralları da kullanıcıların sürpriz yaşamamasını sağlamak üzere güncellendi. Önceden, terfi çoğu zaman yalnızca DType’lar yerine girdi dizilerinin veri değerlerine bağlıydı; bu kafa karıştırıcı bir davranış olabiliyordu.
Yeni terfi yolları için aşağıdaki görsele bakın:

Kaynak: NumPy DType hassasiyeti ve terfi
Performans iyileştirmeleri
Bu yeni sürüm bazı performans iyileştirmeleri de getiriyor.
İyileştirilen başlıca alanlar şunlar:
- Daha hızlı sıralama fonksiyonları
- macOS Accelerate aracılığıyla macOS’te doğrusal cebir işlemlerinin performansında iyileştirmeler
Windows uyumluluğu
Windows kullanıcılarına daha iyi uyum sağlamak için NumPy ekibi yeni sürümde çeşitli uyumluluk sorunlarını da düzeltti.
Örneğin, Windows’ta varsayılan tamsayı türünü diğer işletim sistemlerindeki varsayılan davranışla eşleşecek şekilde int32 yerine int64 olarak değiştirdiler.
Geliştirilmiş dokümantasyon ve kullanılabilirlik
NumPy’nin modül yapısı için daha fazla dokümantasyon eklendi ve başvuru rehberi gezinimi iyileştirildi. Kaynaktan derleme dokümantasyonu da tamamen yeniden yazıldı.
NumPy 2.0’a Nasıl Geçilir
NumPy 2.0’a güncelleme
Öncelikle, NumPy’nin bu yeni sürümünü kullanmaya başlamak için mevcut sürümünüzü en güncel sürüme yükseltmeniz gerekiyor.
Bunu yapmak için, şu komuttaki yükseltme seçeneğini kullanmanız yeterlidir:
pip install -U numpy
Alternatif olarak şunu da kullanabilirsiniz:
pip install –upgrade numpy
Bu yükseltme seçeneği, belirtilen paket(ler)i en son sürüme günceller; bu durumda NumPy. Komutu çalıştırdıktan sonra, “Successfully installed numpy-2.0.0” mesajını görene kadar sistemin paketi kurmasına izin verin.
En son sürüm yerine belirli bir sürüme güncellemek istiyorsanız, bunun yerine şu komutu kullanabilirsiniz:
pip install numpy==2.0.0
Bu, kurduğunuz sürümün doğru sürüm (bu örnekte 2.0.0) olmasını sağlar.
İkinci bir kontrol için şu komutu çalıştırın:
pip list
Bu komut, kurulu tüm paket/kütüphaneleri ve ilgili sürümlerini listeler. Çıktıda numpy kütüphanesinin 2.0.0 sürümüne güncellenip güncellenmediğini kontrol edin.
Kurulum sırasında kırmızı renkte bazı bağımlılık mesajlarıyla da karşılaşabilirsiniz. Bu, en son sürüme güncelledikten sonra kodunuzda potansiyel sorunlar olabileceği anlamına gelir. Ardından etkilenen belirli alanlara ve kütüphanelere tek tek bakabilirsiniz.
NumPy 2.0’a yükseltme geçici olarak aksamalara yol açabilir; bu nedenle betiklerinize ve gelecekteki veri akışlarınıza geçişin düzgün yapıldığından emin olmanız en iyisidir.
Tam bir kılavuz için, geliştiriciler tarafından yayımlanan resmi NumPy 2.0 Geçiş Kılavuzu’na bakın.
Geçiş yaparken dikkat edilmesi gereken başlıca alanlar şunlardır:
NumPy veri türü terfi değişikliklerinin ele alınması
Bir dizi davranış değişikliği ve beklenen veri türü değişiklikleri için tam bir rehber olarak NEP 50’deki bu tabloya bakın.
Geriye dönük uyumluluk açısından ana sorun, skalerlerinizin hassasiyetidir.
Örneğin, şu tür bir işlem çalıştırıldığında:
np.float32(6) + 6.
Bu, geriye dönük uyumluluğu güçleştiren şekilde float64 yerine float32 veri türü döndürür. Bu sorunu ele almak için önerileri şunlar:
Veri türlerini açıkça dönüştürün: Veri türünüzü açıkça belirtmek için int(), float() veya numpy_scalar.item() skalerlerini kullanın.
Değişiklikleri takip etmek için uyarıları etkinleştirin: Hata geri izlemeleri üzerinden değişiklikleri tespit etmek amacıyla uyarıları kullanın.
Ad alanı değişikliklerinin ele alınması
Bu 2.0 güncellemesiyle çok sayıdaki ad alanı kaldırması kodunuzu etkileyebilir. NumPy ekibi şu adımları öneriyor:
- kullanımdan kaldırılan takma adları ve geçiş yönergelerini burada kontrol edin.
- Kullanımdan kaldırılan takma adları geriye dönük uyumlu bir alternatifle değiştirin.
- 2.0 güncellemesinde kaldırılan özel üyeleri kontrol edin.
- Özel üyeler kullanıldıysa mevcut API’yi kullanın.
ABI kırılmasının ele alınması
NumPy’nin C API’sine bağımlı bir Python paketi kullanıyorsanız, ABI’deki kırılmaları ele almanız gerekir. Geliştiriciler bu tür uyumsuzlukları gidermek için NumPy 2.0’a özgü öneriler yayımladı:
Python kodunu güncellemek için Ruff eklentisi
Geçiş sürecinizde size yardımcı olması için, özel bir Ruff eklentisini ve Ruff için ayrılmış NPY201 kuralını kullanabilirsiniz.
Ruff, PyPI’de ruff adıyla mevcuttur. Ruff’u kurmak için komut satırına şunu girin:
pip install ruff
Daha fazla ayrıntı için tam Ruff kurulum kılavuzuna bakın.
pyproject.toml dosyanıza NP201 kuralını eklemeyi unutmayın:
[tool.ruff.lint]
select = ["NPY201"]
Alternatif olarak, NPY201 kuralını komut satırını kullanarak da belirtebilirsiniz:
$ ruff check path/to/code/ --select NPY201
Topluluk Katkıları
NumPy 2.0 sürümü, topluluğun çabalarının bir ürünüdür. Topluluk tarafından önerilen çok sayıdaki NEP sayesinde uzun zamandır beklenen pek çok öneri nihayet hayata geçirildi.
Gönüllü geliştiriciler, araştırmacılar ve meraklılar; uzmanlıklarını paylaşarak, geri bildirim vererek ve NumPy 2.0’ı önemli ölçüde şekillendiren kod iyileştirmeleri göndererek bu çığır açan sürümde kilit bir rol oynadı.
Sonuç
NumPy 2.0; performans, uyumluluk ve kullanılabilirlikteki birçok yeni özellik ve geliştirmeyle Python programlama dili için büyük bir adım. Geçişte veya hatalarla ilgili sorunlar yaşıyorsanız, en iyi yaklaşım doğrudan NumPy ekibiyle iletişime geçmektir.
Bu yazının NumPy’deki bu heyecan verici güncellemenin temel değişikliklerini anlamanıza yardımcı olduğunu umuyorum. Daha derinlemesine okumak için NumPy Eğitimi yazımıza göz atın.
NumPy’de yeniyseniz ve daha fazla keşfetmek istiyorsanız, NumPy’ye Giriş kursumuzu deneyin veya şu NumPy canlı code-along eğitimine göz atın.
Ben Austin, sağlık sektöründe veri bilimci ve veri analisti olarak yıllara dayanan deneyime sahip bir blogger ve teknoloji yazarıyım. Biyoloji geçmişiyle başladığım teknoloji yolculuğumda, şimdi teknoloji blogum aracılığıyla başkalarının da aynı geçişi yapmasına yardımcı oluyorum. Teknolojiye olan tutkum, onlarca SaaS şirketine yazılı katkılar sunmama, başkalarına ilham vermeme ve deneyimlerimi paylaşmama vesile oldu.

