在Python中,可以使用基础函数以及NumPy来打印科学符号的数字。具体来说,你将学习如何使用Python用三种不同的方法以科学记数法打印非常大或非常小(即浮点)的数字。在最后两节,在结束这篇文章之前,你还将学习如何在NumPy数组和Pandas数据框中抑制科学形式。
概要
如前所述,这篇文章将向你展示如何使用三种不同的方法在Python中打印科学符号。然而,首先,我们将了解更多关于科学记号的知识。之后,我们将看一下使用Python函数format() 的第一个例子。在下一个例子中,我们将使用fstrings 来表示科学记数法。在第三个,也是最后一个例子中,我们将使用NumPy。经过这三个例子,你将学会如何在NumPy数组和Pandas数据框中抑制标准索引形式。
科学记号法
要求
现在,要跟上这篇文章,你需要有一个工作的Python安装。此外,如果你想使用fstrings ,你至少需要有Python 3.6(或者更高)。很明显,如果你想使用Python包NumPy来用科学符号表示大数或小数(浮动数),你需要安装这个Python包。在Python中,你可以使用pip来安装软件包。
pip install numpy
Code language: Bash (bash)
在下一节中,我们将进一步了解科学记数法,然后,我们将看一下使用format() 函数的第一个例子。
什么是科学记数法?
科学记数法,也被称为科学形式、标准指数形式或标准形式(在英国),用来表示那些太大或太小,无法用十进制形式表示的数字。
使用 format() 函数的 Python 科学记数法
下面是如何使用format() 函数在Python中表示科学记数法。
print(format(0.00000001,'.1E'))
Code language: Python (python)
通常情况下,当你想以特定的格式来格式化字符串时,会使用format() 函数。在上面的代码块中,format() 函数的使用是非常直接的。第一个参数是我们想用Python的科学形式来表示的(小)数字。此外,第二个参数被用来指定格式化模式。具体来说,E表示指数符号,以科学符号的形式打印该值。 此外,.1用于告诉format() 函数,我们希望在小数点后面有一个数字。下面是两个使用Python以科学记数法打印大数和小数的工作实例。
现在,如果我们想格式化一个字符串,我们可以像这样使用format() 函数。
'A large value represented in scientific form in Python: {numb:1E}'.format(numb=1000000000000000000)
Code language: Python (python)
注意我们是如何在我们想要科学符号的地方使用大括号的。现在,在大括号内我们添加了numb ,然后,再次添加.1E(原因与之前相同)。在format() 函数中,我们再次使用 numb,在这里我们添加了我们想要打印的数字,作为 Python 的标准索引形式。在下一节,我们将使用Python的fstrings ,以标准索引形式打印数字。
使用 fstrings 的 Python 科学形式
如果你想在Python中用科学符号表示小数字,这里还有一种方法可以使用。
print(f'{0.00000001: .1E}')
Code language: Python (python)
在这个例子中,语法与我们在前面的例子中使用的语法相当相似。但是请注意,我们在单引号之前使用了f 。现在在大括号中,我们把我们想打印的小数的科学形式放进去。同样,我们以与上面类似的方式使用.1E 。告诉fstrings我们希望以科学符号的形式进行格式化。这里有两个例子,我们对小数和大数都做了同样的事情。
记住,fstrings 只能在你安装了Python 3.6或更高版本的情况下使用,与使用format() 函数时相比,它将使你的代码更易读一些。在下一个例子中,我们将使用NumPy。
使用NumPy的Python科学记数法
下面是我们如何使用NumPy在Python中以科学记数法打印数字。
import numpy as np
np.format_float_scientific(0.00000001, precision = 1, exp_digits=2)
Code language: Python (python)
在上面的代码块中,我们使用了函数format_float_scientific() 。在这里,我们用精度参数来指定decimal digits ,用exp_digits 来告诉我们在指数符号中想要多少个数字。然而,请注意,NumPy默认会以科学形式打印大数和小数。在下一个,也是最后一个例子中,我们将看看如何在Python中抑制科学记号。
如何在NumPy数组中压制科学符号
下面是我们如何在Python NumPy数组中抑制科学符号。
import numpy as np
# Suppressing scientific notation
np.set_printoptions(suppress=True)
# Creating a np array
np_array = [np.random.normal(0, 0.0000001, 10),
np.random.normal(0, 1000000, 10)]
np_array
Code language: Python (python)
在这个例子中,我们首先创建了一个NumPy数组(一个有10个小数和10个大数的正态分布)。其次,我们使用set_printoptions() 函数和参数suppress。当然,将这个参数设置为 "True "将打印出数字的 "原样"。
在下一个,也是最后一个例子中,我们将看看如何在Pandas数据框中抑制科学符号。
抑制Python中的科学记号
如何在Pandas数据框中抑制科学符号
下面是我们如何使用set_option()方法来抑制Pandas数据框架中的科学符号。
import pandas as pd
df = pd.DataFrame(np.random.randn(4, 2)*100000000,
columns=['A', 'B'])
Code language: Python (python)
在上面的代码块中,我们使用 Pandas的dataframe方法将一个NumPy数组转换为一个数据框架。这个数据框架在打印时,会以科学形式显示数字。因此,我们使用set_option() 方法来抑制这种打印。这里还值得注意的是,这将在Jupyter笔记本中设置全局选项。还有其他选项,如使用round() 方法。
总结
在这篇文章中,你已经学会了如何使用Python以科学符号来表示数字。具体来说,你已经学会了三种不同的方法,以科学形式打印大数和小数。在这三个例子之后,你还学会了如何在NumPy数组和Pandas数据框中抑制科学符号。希望你能学到有价值的东西。如果你做到了,请在下面留下评论,并在你的社交媒体渠道上分享这篇文章。最后,如果你对这篇文章(或博客上的任何其他文章)有任何更正,或建议,请在下面留言或使用联系表格。




