Pretty-print a NumPy array without scientific notation and with given precision
When printing NumPy arrays of floats, it often results in several decimals and uses scientific format, making it hard to read, especially for low-dimensional arrays. Since NumPy arrays need to be printed as strings, this raises the question of finding a solution for this issue.
Using numpy.set_printoptions allows you to set the desired precision for your output. By setting this option, you can control the number of decimal places displayed.
To further improve readability, you can disable scientific notation using the suppress option. This ensures that small numbers are displayed in standard notation.
import numpy as np x = np.random.random(10) print(x) # [ 0.07837821 0.48002108 0.41274116 0.82993414 0.77610352 0.1023732 # 0.51303098 0.4617183 0.33487207 0.71162095] np.set_printoptions(precision=3) print(x) # [ 0.078 0.48 0.413 0.83 0.776 0.102 0.513 0.462 0.335 0.712]
y = np.array([1.5e-10, 1.5, 1500]) print(y) # [ 1.500e-10 1.500e+00 1.500e+03] np.set_printoptions(suppress=True) print(y) # [ 0. 1.5 1500. ]
If you're using NumPy version 1.15.0 or later, you can leverage the numpy.printoptions context manager for localized application of print options. Within the context, desired print settings are applied, but revert to default settings outside.
x = np.random.random(10) with np.printoptions(precision=3, suppress=True): print(x) # [ 0.073 0.461 0.689 0.754 0.624 0.901 0.049 0.582 0.557 0.348]
To prevent zeros from being removed from the end of floats, you can utilize the formatter parameter in np.set_printoptions. This parameter allows you to specify a format function for each data type.
np.set_printoptions(formatter={'float': '{: 0.3f}'.format}) print(x) # Output: [ 0.078 0.480 0.413 0.830 0.776 0.102 0.513 0.462 0.335 0.712]
The above is the detailed content of How to Pretty-Print NumPy Arrays Without Scientific Notation and with Specified Precision?. For more information, please follow other related articles on the PHP Chinese website!