Nasıl düzeltilir? true_divide'da geçersiz değerle karşılaşıldı
NumPy’yi kullanırken karşılaşabileceğiniz bir uyarı:
RuntimeWarning : invalid value encountered in true_divide
Bu uyarı, bir NumPy dizisinde geçersiz bir değere (NaN, Inf vb.) bölmeye çalıştığınızda ortaya çıkar.
Bunun yalnızca bir uyarı olduğunu ve NumPy’nin geçersiz bir değere bölmeye çalıştığında basitçe bir nan değeri döndüreceğini unutmamak gerekir.
Aşağıdaki örnekte bu uyarıya pratikte nasıl yanıt verileceği gösterilmektedir.
Hata nasıl yeniden oluşturulur?
Bir NumPy dizisinin değerlerini başka bir NumPy dizisinin değerlerine bölmeye çalıştığımızı varsayalım:
import numpy as np #define NumPy arrays x = np. array ([4, 5, 5, 7, 0]) y = np. array ([2, 4, 6, 7, 0]) #divide the values in x by the values in y n.p. divide (x,y) array([2., 1.25, 0.8333, 1., no]) RuntimeWarning : invalid value encountered in true_divide
NumPy’nin her x değerini karşılık gelen y değerine böldüğünü ancak bir RuntimeWarning üretildiğini unutmayın.
Bunun nedeni, gerçekleştirilen son bölme işleminin sıfır bölü sıfır olması ve bunun da nan değeriyle sonuçlanmasıdır.
Bu uyarıya nasıl yanıt verilir?
Daha önce de belirtildiği gibi, bu RuntimeWarning yalnızca bir uyarıdır ve kodun yürütülmesini engellemez.
Ancak bu tür uyarıları gizlemek istiyorsanız aşağıdaki sözdizimini kullanabilirsiniz:
n.p. seterr (invalid=' ignore ')
Bu, NumPy’ye “geçersiz” mesaj içeren uyarıları gizlemesini söyler.
Yani kodu tekrar çalıştırırsak herhangi bir uyarı almayacağız:
import numpy as np #define NumPy arrays x = np. array ([4, 5, 5, 7, 0]) y = np. array ([2, 4, 6, 7, 0]) #divide the values in x by the values in y n.p. divide (x,y) array([2., 1.25, 0.8333, 1., no])
Çıkışın son değeri için yine bir nan değeri döndürülür ancak bu sefer herhangi bir uyarı mesajı görüntülenmez.
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ı