Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

use logging.info to write float values inside a log file

Tags:

python

logging

I am using logging package to write some error values and a matrix inside a log file.

logging.info("Error = %.4f"%err)
logging.info(error_mat) #error_mat is a NxN matrix

However, the matrix gets written in a different manner:

2014-09-08 14:10:20,107 - root - INFO - [[  8.30857546   0.69993454   0.20645551  
77.01797674  13.76705776]
 [  8.35205432   0.53417203   0.19969048  76.78598173  14.12810144]
 [  8.37066492   0.64428449   0.18623849  76.4181809   14.3806312 ]
 [  8.50493296   0.5110043    0.19731849  76.45838604  14.32835821]
 [  8.18900791   0.4955451    0.22524777  76.96966663  14.12053259]]

or

2014-09-08 14:12:22,211 - root - INFO - [[  3.25142253e+01   1.11788106e+00   1.51065008e-02   6.16496299e+01
    4.70315726e+00]
 [  3.31685887e+01   9.53522041e-01   1.49767860e-02   6.13449154e+01
    4.51799710e+00]
 [  3.31101827e+01   1.09729703e+00   5.03347259e-03   6.11818594e+01
    4.60562742e+00]
 [  3.32506957e+01   1.13837592e+00   1.51783456e-02   6.08651657e+01
    4.73058437e+00]
 [  3.26809490e+01   1.06617279e+00   1.00110121e-02   6.17429172e+01
    4.49994994e+00]]

How can we specify the precision for the float values inside the error_mat, e.g. %.3f for a 3 decimal point precision? Also this will ensure the matrix values to be written in a single without line breaks.

like image 252
cuda_hpc80 Avatar asked May 20 '26 07:05

cuda_hpc80


2 Answers

Floating point number formatting is supported now:

you can use %.nf where n is the number of floating point numbers after the dot.

example :- _logger.info("Client started in %.4f seconds", end-start)

like image 57
Alen Paul Varghese Avatar answered May 21 '26 23:05

Alen Paul Varghese


If error_mat is a NumPy array, then you could use np.set_printoptions (as Padraic Cunningham commented):

import numpy as np
arr = np.random.random((3, 4))-0.5
np.set_printoptions(formatter={'float': '{: 0.3f}'.format})
print(arr)

prints something like

[[ 0.019  0.351 -0.138 -0.183]
 [-0.087  0.322  0.490 -0.407]
 [ 0.357  0.353 -0.077  0.411]]
like image 39
unutbu Avatar answered May 22 '26 01:05

unutbu



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!