Nasıl düzeltilir: runtimewarning: double_scalars'ta geçersiz değerle karşılaşıldı


Python’da karşılaşabileceğiniz bir hata:

 runtimewarning: invalid value encountered in double_scalars

Bu hata, çok küçük veya çok büyük sayılar içeren bir matematiksel işlem gerçekleştirmeye çalıştığınızda ortaya çıkar ve Python, sonuç olarak basitçe bir NaN değeri üretir.

Aşağıdaki örnekte bu hatanın pratikte nasıl düzeltileceği gösterilmektedir.

Hata nasıl yeniden oluşturulur?

Aşağıdaki matematiksel işlemi iki NumPy dizisiyle gerçekleştirmeye çalıştığımızı varsayalım:

 import numpy as np

#define two NumPy arrays
array1 = np. array ([[1100, 1050]])
array2 = np. array ([[1200, 4000]])

#perform complex mathematical operation
n.p. exp (-3*array1). sum () / np. exp (-3*array2). sum ()

RuntimeWarning: invalid value encountered in double_scalars

Paydadaki sonuç sıfıra çok yakın olduğu için RuntimeWarning alıyoruz.

Bu, bölme probleminin cevabının son derece büyük olacağı ve Python’un bu kadar büyük bir değeri işleyemeyeceği anlamına gelir.

Hata nasıl düzeltilir?

Genellikle bu tür hataları düzeltmenin yolu, hesaplamalarda aşırı küçük veya aşırı büyük değerleri işleyebilen başka bir Python kütüphanesinden özel bir fonksiyon kullanmaktır.

Bu durumda SciPy kütüphanesindeki logsumexp() fonksiyonunu kullanabiliriz:

 import numpy as np
from scipy. special import logsumexp

#define two NumPy arrays
array1 = np. array ([[1100, 1050]])
array2 = np. array ([[1200, 4000]])

#perform complex mathematical operation
n.p. exp (logsumexp(-3*array1) - logsumexp(-3*array2))

2.7071782767869983e+195

Sonucun son derece büyük olduğunu ancak herhangi bir hata almadığımızı unutmayın çünkü bu tür sayıları işlemek için SciPy kütüphanesinden özel bir matematik fonksiyonu kullandık.

Çoğu durumda, SciPy kütüphanesinde aşırı matematiksel işlemleri gerçekleştirebilecek özel işlevler aramaya değer çünkü bu işlevler özellikle bilimsel hesaplama için tasarlanmıştır.

Not : Logsumexp() işlevine ilişkin çevrimiçi belgelerin tamamını burada bulabilirsiniz.

Ek kaynaklar

Aşağıdaki eğitimlerde Python’daki diğer yaygın hataların nasıl düzeltileceği açıklanmaktadır:

Pandas’ta KeyError Nasıl Düzeltilir
Nasıl düzeltilir? ValueError: float NaN int’ye dönüştürülemiyor
Nasıl düzeltilir? ValueError: İşlenenler şekillerle yayınlanamadı

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir