Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

RuntimeWarning: invalid value encountered in long_scalars

I'm having an issue with modifying an array, by adding the percentage of each item compared to its row to a new matrix. This is the code providing error:

for j in range(1,27):
        for k in range(1,27):
                let_prob[j,k] = let_mat[j,k]*100/(let_mat[j].sum())

I get the error:

RuntimeWarning: invalid value encountered in long_scalars

I have tried rounding the denominator to no success.

like image 494
twallien Avatar asked Jan 10 '16 19:01

twallien


1 Answers

It seems that you are dealing with big numbers, since it raised the error RuntimeWarning. To get rid of such errors, as a numpythonic way you can first calculate the sum of each row using the np.sum() function by specifying the proper axis then repeat and reshape the array in order to be able to divide with your array, them multiple with 100 and round the result:

col, row = np.shape(let_mat) 
let_prob = np.round((let_mat/np.repeat(let_mat.sum(axis=1),row).reshape(col, row).astype(‌​float))*100,2)

Demo :

>>> a = np.arange(20).reshape(4,5)
>>> 
>>> a
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])

>>> np.round((a/np.repeat(a.sum(axis=1),5).reshape(4,5).astype(float))*100,2)
array([[  0.  ,  10.  ,  20.  ,  30.  ,  40.  ],
       [ 14.29,  17.14,  20.  ,  22.86,  25.71],
       [ 16.67,  18.33,  20.  ,  21.67,  23.33],
       [ 17.65,  18.82,  20.  ,  21.18,  22.35]])
like image 128
Mazdak Avatar answered Oct 04 '22 21:10

Mazdak