[Tut] How to Print a NumPy Array Without Scientific Notation in Python - Printable Version +- Sick Gaming (https://www.sickgaming.net) +-- Forum: Programming (https://www.sickgaming.net/forum-76.html) +--- Forum: Python (https://www.sickgaming.net/forum-83.html) +--- Thread: [Tut] How to Print a NumPy Array Without Scientific Notation in Python (/thread-100114.html) |
[Tut] How to Print a NumPy Array Without Scientific Notation in Python - xSicKxBot - 10-20-2022 How to Print a NumPy Array Without Scientific Notation in Python <div> <div class="kk-star-ratings kksr-auto kksr-align-left kksr-valign-top" data-payload="{"align":"left","id":"809641","slug":"default","valign":"top","ignore":"","reference":"auto","class":"","count":"0","readonly":"","score":"0","best":"5","gap":"5","greet":"Rate this post","legend":"0\/5 - (0 votes)","size":"24","width":"0","_legend":"{score}\/{best} - ({count} {votes})","font_factor":"1.25"}"> <div class="kksr-stars"> <div class="kksr-stars-inactive"> <div class="kksr-star" data-star="1" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> <div class="kksr-star" data-star="2" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> <div class="kksr-star" data-star="3" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> <div class="kksr-star" data-star="4" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> <div class="kksr-star" data-star="5" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> </p></div> <div class="kksr-stars-active" style="width: 0px;"> <div class="kksr-star" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> <div class="kksr-star" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> <div class="kksr-star" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> <div class="kksr-star" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> <div class="kksr-star" style="padding-right: 5px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </p></div> </p></div> </div> <div class="kksr-legend" style="font-size: 19.2px;"> <span class="kksr-muted">Rate this post</span> </div> </div> <h2><strong>Problem Formulation</strong></h2> <p>» <strong>Problem Statement:</strong> Given a <a rel="noreferrer noopener" href="https://blog.finxter.com/numpy-tutorial/" target="_blank">NumPy</a> array. How to print the NumPy array without scientific notation in Python?</p> <p><strong>Note: </strong>Python represents very small or very huge floating-point numbers in their scientific form. Scientific notation represents the number in terms of powers of 10 to display very large or very small numbers. For example, the scientific notation for the number 0.000000321 is described as 3.21e07. </p> <p>In Python, the NumPy module generally uses scientific notation instead of the actual number while printing/displaying the array items.</p> <p><strong>Example:</strong> Look at the following code snippet:</p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">arr = np.array([1, 5, 10, 20, 35, 5000.5]) print(arr)</pre> <p><strong>Output:</strong></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="beyond" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">[1.0000e+00 5.0000e+00 1.0000e+01 2.0000e+01 3.5000e+01 5.0005e+03]</pre> <p><strong>Expected Output:</strong> Print the given array without scientific notation in Python as:</p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="beyond" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">[ 1. 5. 10. 20. 35. 5000.5]</pre> <p>Without further ado, let’s dive into the different ways of solving the given problem. </p> <h2>☛<strong>Method 1: Using set_printoptions() Function</strong></h2> <p>The <code>set_printoptions()</code> is a function in the numpy module that is used to set how the floating-point numbers, NumPy arrays and numpy objects are to be displayed. By default, the very big or very small numbers of the array are represented using scientific notation. We can use the <code>set_printoptions()</code> function by passing the suppress as <code>True</code> to remove the scientific notation of the numpy array.</p> <p><strong>Approach:</strong></p> <ul> <li>Import the Numpy module to create the array.</li> <li>Use the <code>set_printoptions()</code> function and pass the suppress value as True.</li> <li>Print the array; it will get displayed without the scientific notation.</li> </ul> <p><strong>Code:</strong></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># Importing the numpy module import numpy as np # Creating a NumPy array a = np.array([1, 5, 10, 20, 35, 5000.5]) print("Numpy array with scientific notation", a) np.set_printoptions(suppress = True) print("Numpy array without scientific notation", a)</pre> <p><strong>Output:</strong></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="beyond" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Numpy array with scientific notation [1.0000e+00 5.0000e+00 1.0000e+01 2.0000e+01 3.5000e+01 5.0005e+03] Numpy array without scientific notation [ 1. 5. 10. 20. 35. 5000.5]</pre> <p><strong>Discussion</strong>: The <code>set_printoptions()</code> function only works for the numbers that fit in the default 8-character space allotted to it, as shown below:</p> <p><strong>Code:</strong></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import numpy as np # Array with element index 1 having 8 digits a = np.array([5.05e-5, 15.6, 2.1445678e5]) print("Numpy array with scientific notation", a) np.set_printoptions(suppress = True) print("Numpy array without scientific notation", a)</pre> <p><strong>Output:</strong></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="beyond" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Numpy array with scientific notation [5.0500000e-05 1.5600000e+01 2.1445678e+05] Numpy array without scientific notation [ 0.0000505 15.6 214456.78 ]</pre> <p>When we pass a number that is greater than 8 characters wide, exponential notation is imposed as shown below:</p> <p><strong>Code:</strong></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import numpy as np # Array with element index 1 having more than 8 digits a = np.array([5.05e-5, 15.6, 2.1445678e10]) print("Numpy array with scientific notation", a) np.set_printoptions(suppress = True) print("Numpy array without scientific notation", a)</pre> <p><strong>Output:</strong></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="beyond" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Numpy array with scientific notation [5.0500000e05 1.5600000e+01 2.1445678e+10] Numpy array without scientific notation [5.0500000e05 1.5600000e+01 2.1445678e+10]</pre> <h2>☛<strong>Method 2: Using set_printoptions() Function with .format</strong></h2> <p>As in method 1, the <code>set_printoptions()</code> function does not work when the number has more than eight characters. That is when <code>set_printoptions(formatter)</code> is used to specify the options for printing and rounding. We have to set the function to print the float variable.</p> <p>Python’s built-in format(value, spec) function transforms the input of one format into the output of another format defined by you. Specifically, it applies the format specifier spec to the argument value and returns a formatted representation of value. Read more about the “<a href="https://blog.finxter.com/python-format-function/#:~:text=Python's%20built%2Din%20format(value,a%20formatted%20representation%20of%20value%20." target="_blank" rel="noreferrer noopener"><strong>Python format() Function</strong></a>.”</p> <p><strong>Code:</strong></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import numpy as np # Creating a NumPy array # Array with element index 1 having more than 8 digits a = np.array([5.05e-5, 15.6, 2.1445678e10]) print("Numpy array with scientific notation", a) np.set_printoptions(suppress = True, formatter = {'float_kind':'{:f}'.format}) print("Numpy array without scientific notation", a)</pre> <p><strong>Output:</strong></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Numpy array with scientific notation [5.0500000e-05 1.5600000e+01 2.1445678e+10] Numpy array without scientific notation [0.000051 15.600000 21445678000.000000]</pre> <p>We can also format the output to only have 2 units precision by using <code>'{:0.2f}' .format</code> as shown below:</p> <p><strong>Code:</strong></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import numpy as np # Array with element index 1 having more than 8 digits a = np.array([5.05e-5, 15.6, 2.1445678e10]) print("Numpy array with scientific notation", a) np.set_printoptions(suppress = True, formatter = {'float_kind':'{:0.2f}'.format}) print("Numpy array without scientific notation", a)</pre> <p><strong>Output:</strong></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="beyond" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Numpy array with scientific notation [5.0500000e-05 1.5600000e+01 2.1445678e+10] Numpy array without scientific notation [0.00 15.60 21445678000.00]</pre> <p><strong>Discussion:</strong> The disadvantage of using this method to suppress the exponential notion in the numpy arrays is when the array gets a very large float value. When we try to print this array, we are going to get a whole page of numbers.</p> <h2>☛<strong>Method 3: Using printoptions() Function</strong></h2> <p>The <code>printoption()</code> function is a function in the Numpy module used as a context manager for setting print options. By passing the precision as 3 and suppress as True in the <code>printoptions()</code> function, we can remove the scientific notation and print the Numpy array.</p> <p><strong>Note:</strong> This function only works if you use NumPy versions 1.15.0 or later.</p> <p><strong>Approach:</strong></p> <ul> <li>Import the numpy module to create the array.</li> <li>Use the printoption() function inside the “with” and pass the precision value as 3 and the suppress value as True.</li> <li>Print the array; it will get displayed without the scientific notation.</li> </ul> <p><strong>Code:</strong></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import numpy as np # Creating a NumPy array a = np.array([1, 5, 10, 20, 35, 5000.5]) print("Numpy array with scientific notation", a) print("Numpy array without scientific notation:") with np.printoptions(precision = 3, suppress = True): print(a)</pre> <p><strong>Output:</strong></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="beyond" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Numpy array with scientific notation [1.0000e+00 5.0000e+00 1.0000e+01 2.0000e+01 3.5000e+01 5.0005e+03] Numpy array without scientific notation: [ 1. 5. 10. 20. 35. 5000.5]</pre> <h2>☛<strong>Method 4: Using array2string() Function</strong></h2> <p>The <code>array2string()</code> is a function in the numpy module that returns a string representation of an array. We can use this function to print a NumPy array without scientific notation by passing the array as the argument and setting the <code>suppress_small</code> argument as <code>True</code>. When the <code>suppress_small</code> argument is <code>True</code>, it represents the numbers close to zero as zero.</p> <p><strong>Approach:</strong></p> <ul> <li>Import the numpy module to create the array.</li> <li>Use the <code>array2string()</code> function and pass the <code>suppress_small</code> argument as <code>True</code>.</li> <li>Finally, print the array. It will get displayed without the scientific notation.</li> </ul> <p><strong>Code:</strong></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import numpy as np # Creating a NumPy array a = np.array([1, 5, 10, 20, 35, 5000.5]) print("Numpy array with scientific notation", a) a = np.array2string(a, suppress_small = True) print("Numpy array without scientific notation:", a)</pre> <p><strong>Output:</strong></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="beyond" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Numpy array with scientific notation [1.0000e+00 5.0000e+00 1.0000e+01 2.0000e+01 3.5000e+01 5.0005e+03] Numpy array without scientific notation: [ 1. 5. 10. 20. 35. 5000.5]</pre> <h2><strong>Conclusion</strong></h2> <p>Hurrah! We have successfully solved the mission-critical question in numerous ways in this article. I hope you found it helpful. Please stay tuned and <strong><a rel="noreferrer noopener" href="https://blog.finxter.com/subscribe/" target="_blank">subscribe</a></strong> for more such interesting articles. </p> <p class="has-background" style="background-color:#fbf7be;font-size:19.5px"><strong><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f48e.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />Interesting Read:</strong> <a rel="noreferrer noopener" href="https://blog.finxter.com/how-to-suppress-scientific-notation-in-python/" target="_blank"><strong>How to Suppress Scientific Notation in Python?</strong></a></p> <hr class="wp-block-separator has-alpha-channel-opacity" /> <p><strong>Do you want to become a NumPy master?</strong> Check out our interactive puzzle book <a href="https://amzn.to/39dEykm" target="_blank" rel="noreferrer noopener" title="https://amzn.to/39dEykm"><strong>Coffee Break NumPy</strong></a> and boost your data science skills! <em>(Amazon link opens in new tab.)</em></p> <div class="wp-block-image"> <figure class="aligncenter size-medium"><a href="https://amzn.to/39dEykm" target="_blank" rel="noopener noreferrer"><img loading="lazy" width="200" height="300" src="https://blog.finxter.com/wp-content/uploads/2019/04/Cover_Coffee_Break_NumPy-200x300.jpg" alt="Coffee Break NumPy" class="wp-image-2766"/></a></figure> </div> </div> https://www.sickgaming.net/blog/2022/10/20/how-to-print-a-numpy-array-without-scientific-notation-in-python/ |