Cara memperbaiki: runtimewarning: nilai tidak valid ditemukan di double_scalars
Kesalahan yang mungkin Anda temui di Python adalah:
runtimewarning: invalid value encountered in double_scalars
Kesalahan ini terjadi ketika Anda mencoba melakukan operasi matematika yang melibatkan angka yang sangat kecil atau sangat besar dan Python hanya menghasilkan nilai NaN sebagai hasilnya.
Contoh berikut menunjukkan cara memperbaiki kesalahan ini dalam praktiknya.
Bagaimana cara mereproduksi kesalahan tersebut
Misalkan kita mencoba melakukan operasi matematika berikut dengan dua array NumPy:
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
Kami menerima RuntimeWarning karena hasil penyebutnya sangat mendekati nol.
Artinya, jawaban terhadap soal pembagian akan sangat besar dan Python tidak mampu menangani nilai sebesar itu.
Bagaimana cara memperbaiki kesalahan tersebut
Biasanya, cara untuk memperbaiki kesalahan jenis ini adalah dengan menggunakan fungsi khusus dari pustaka Python lain yang dapat menangani nilai yang sangat kecil atau sangat besar dalam perhitungan.
Dalam hal ini, kita dapat menggunakan fungsi logsumexp() dari perpustakaan SciPy:
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
Perhatikan bahwa hasilnya sangat besar tetapi kami tidak menerima kesalahan apa pun karena kami menggunakan fungsi matematika khusus dari perpustakaan SciPy yang dirancang untuk menangani jenis angka ini.
Dalam banyak kasus, ada baiknya mencari fungsi khusus di perpustakaan SciPy yang dapat menangani operasi matematika ekstrem, karena fungsi ini dirancang khusus untuk komputasi ilmiah.
Catatan : Anda dapat menemukan dokumentasi online lengkap untuk fungsi logsumexp() di sini .
Sumber daya tambahan
Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya dengan Python:
Cara Memperbaiki KeyError di Pandas
Cara Memperbaiki: ValueError: Tidak dapat mengubah float NaN menjadi int
Cara Memperbaiki: ValueError: Operan tidak dapat disiarkan dengan bentuk