Reputation: 35
I become this expression:
RuntimeWarning: invalid value encountered in log
while trying this:
def fct(a, b, c, d):
global u1
global u2
if np.all(c > 0) and np.all(a > 0) and np.all(u1 != 0) and np.all(u2 != 0):
return a, c, u1, u2
u1, u2 = np.log(0.6*c), (math.e**d)**0.5
F = np.log(a**2) + 6*[math.e**(-b)]/u1 + 3/u2
print( F )
any idea??
Upvotes: 3
Views: 13700
Reputation: 476
This can be overcome by a simple function to check for values equal to zero with:
def safe_log(col_data):
return list(map(lambda x: 0 if x == 0 else math.log(x), col_data.values))
where col_data
is a Pandas dataframe column. For example:
ln_numbers = safe_log(df['my_column'])
Upvotes: 0
Reputation: 5797
This error message can emerge at two expression your code contains:
np.log(0.6*c) and np.log(a**2)
in the for loop with:
np.random.normal()
you will get random numbers at this distribution, whose values will be negative numbers.
That's why np.log(0.6*c
will drop up the error message:
RuntimeWarning: invalid value encountered in log
And as Christoph noted below perfectly we have to be prepared for any 0
, because both np.log(0.6*0)
and np.log(0**2)
will result in an error message too.
Example:
np.random.normal(10,4,100)
Out:
array([ 8.04664247, 14.4991884 , 10.89789303, 13.37593183, 3.29981902,
16.6316143 , 10.64138342, 4.0459445 , 10.49192082, -3.04538967!!!!!,
13.30443781, 4.13345961, 12.06508196, 10.4286879 , 7.39431349,
12.36789249, 9.20424736, 11.13161087, 12.15404482, 12.69897663,
9.43633904, 12.77818913, 9.02926639, 4.78638573, 13.13104605,
12.71197993, 6.1550897 , 7.18496505, 4.3160573 , 9.12631992,
8.52408627, 12.45941119, 5.34780934, 5.7023213 , 13.53096085,
12.1087058 , 3.65110834, 5.15466232, 8.78768562, 12.54764999,
15.12211713, 3.26481809, 9.8623701 , 15.88784306, 5.83355467,
5.32775214, 8.81188865, 13.21886467, 6.78984216, 8.67260897,
7.06100605, 13.75314668, 15.56562533, 10.33916552, 7.72745465,
11.27606127, 11.56813697, 7.03177164, 10.63155512, 11.67072579,
11.70855769, 10.78372397, 5.11327436, 15.61581808, 9.53446815,
11.21806808, 11.2235412 , 7.68339223, 12.71484256, 9.99613038,
13.51834424, 7.73615596, 8.75145457, 13.02222188, 6.76757021,
13.03580839, 10.67504642, 15.36110384, 15.66816384, -0.0952157 !!!!!!!! ,
2.23551198, 11.21584659, 4.37791786, 5.45895529, 15.44411348,
14.7077441 , 14.52080519, 3.70418827, 5.03132122, 5.24810117,
16.35309566, 7.08504246, 6.81224092, 14.69274684, 8.43257572,
12.87468578, 7.01621364, 7.62879265, 7.14646032, 20.16254855])
Stepping into your function inside of np.log()
c = np.array([ 8.04664247, 14.4991884 , 10.89789303, 13.37593183, 3.29981902,
16.6316143 , 10.64138342, 4.0459445 , 10.49192082, -3.04538967,
13.30443781, 4.13345961, 12.06508196, 10.4286879 , 7.39431349,
12.36789249, 9.20424736, 11.13161087, 12.15404482, 12.69897663,
9.43633904, 12.77818913, 9.02926639, 4.78638573, 13.13104605,
12.71197993, 6.1550897 , 7.18496505, 4.3160573 , 9.12631992,
8.52408627, 12.45941119, 5.34780934, 5.7023213 , 13.53096085,
12.1087058 , 3.65110834, 5.15466232, 8.78768562, 12.54764999,
15.12211713, 3.26481809, 9.8623701 , 15.88784306, 5.83355467,
5.32775214, 8.81188865, 13.21886467, 6.78984216, 8.67260897,
7.06100605, 13.75314668, 15.56562533, 10.33916552, 7.72745465,
11.27606127, 11.56813697, 7.03177164, 10.63155512, 11.67072579,
11.70855769, 10.78372397, 5.11327436, 15.61581808, 9.53446815,
11.21806808, 11.2235412 , 7.68339223, 12.71484256, 9.99613038,
13.51834424, 7.73615596, 8.75145457, 13.02222188, 6.76757021,
13.03580839, 10.67504642, 15.36110384, 15.66816384, -0.0952157 ,
2.23551198, 11.21584659, 4.37791786, 5.45895529, 15.44411348,
14.7077441 , 14.52080519, 3.70418827, 5.03132122, 5.24810117,
16.35309566, 7.08504246, 6.81224092, 14.69274684, 8.43257572,
12.87468578, 7.01621364, 7.62879265, 7.14646032, 20.16254855])
print(np.log(0.6*c))
Out:
[1.5744293 2.16326705 1.87774385 2.08263134 0.683042 2.30047974
1.85392487 0.8868894 1.83977989 nan!!!! 2.07727203 0.90828911
1.97948987 1.83373484 1.48988563 2.00427818 1.70883942 1.89896326
1.9868364 2.03069579 1.73374247 2.03691412 1.6896455 1.05494996
2.06415373 2.03171923 1.30645371 1.46116503 0.9515167 1.70033691
1.63207021 2.01165063 1.16586138 1.23004771 2.09415483 1.98309906
0.78420515 1.12907599 1.66252576 2.01870777 2.20533276 0.67237842
1.77790089 2.25472861 1.25280091 1.16210379 1.66527617 2.07081933
1.40460207 1.64934404 1.44376192 2.11044202 2.23423935 1.82511354
1.5339539 1.91185638 1.93742888 1.43961306 1.85300085 1.94625801
1.94949438 1.86721233 1.12101435 2.23745876 1.74408784 1.90670008
1.90718784 1.52823552 2.03194439 1.79137243 2.09322197 1.53507929
1.6583943 2.05583165 1.40131649 2.05687444 1.85708328 2.22101297
2.24080525 nan!!!!! 0.29364465 1.90650203 0.96574761 1.18643181
2.2264023 2.17754854 2.16475684 0.79863852 1.10485699 1.14704071
2.28359159 1.44716024 1.40789551 2.17652834 1.62127664 2.04443742
1.43739808 1.52110397 1.45579155 2.49300123]
/untitled0.py:37: RuntimeWarning: invalid value encountered in log
Upvotes: 2