如何使用NumPy抑制对小数的科学计数法使用?




如何使用NumPy抑制对小数的科学计数法使用?

在使用NumPy数组时,您可能会遇到以科学计数法表示的小数。尽管这种紧凑的表示方法有优势,但解读或比较值可能很困难。本指南深入探讨了四种不同的技术,以降低NumPy数组中小数使用科学计数法的情况:使用numpy.vectorize结合字符串格式化、利用numpy.ndarray.round、利用字符串格式化和利用numpy.set_printoptions。示例将阐述这些方法,讨论各自的优缺点,并提供全面的理解。

方法一:使用numpy.vectorize和字符串格式化

当结合字符串格式化时,numpy.vectorize函数可以抑制NumPy数组中的科学计数法。这种方法适用于对每个元素应用特定格式的情况,从而产生一个新的格式化字符串数组。

语法

formatted_array = numpy.vectorize('{:.Nf}'.format)(array)

在这里,N表示要保留的小数位数,'{:.Nf}’表示带有N位小数的浮点数的字符串格式化语法。numpy.vectorize函数将字符串格式应用于每个元素。



示例

在下面的示例中,我们使用微小的数字构建了一个NumPy数组,并使用带有字符串格式的numpy.vectorize来减少科学计数法。

import numpy as np

array = np.array([1e-10, 2e-10, 3e-10])
formatted_array = np.vectorize('{:.10f}'.format)(array)
print(formatted_array)

输出结果

['0.0000000001' '0.0000000002' '0.0000000003']

优点

  • 将特定的格式应用于每个元素。

  • 适应其他格式要求。

缺点

  • 输出一个字符串数组,不适用于进一步的数值操作。

方法2:使用numpy.ndarray.round

numpy.ndarray.round函数可以将NumPy数组元素四舍五入到指定的小数位数,有效地减少科学计数法。这种方法对于保留输出为具有数值的NumPy数组很有用。

语法

rounded_array = array.round(N)

在此,N代表要保留的小数位数。round函数将每个元素四舍五入到N位小数。

示例

在下面的示例中,我们创建一个NumPy数组并使用numpy.ndarray.round函数来缩小科学计数法表示的数字。

import numpy as np

array = np.array([1e-10, 2e-10, 3e-10])
rounded_array = array.round(10)
print(rounded_array)

输出

[0.0000000001 0.0000000002 0.0000000003]

优点

  • 将输出保留为具有数值的NumPy数组。

  • 适用于进一步的数值操作。

缺点



  • 不适用于特定的字符串格式要求。

3:使用字符串格式化

字符串格式化方便地对NumPy数组中的每个元素进行格式化,抑制科学计数法。这种方法类似于使用numpy.vectorize和字符串格式化,但使用了列表推导。

语法

formatted_array = ['{:.Nf}'.format(x) for x in array]

在这里,N代表要保留的小数位数,'{:.Nf}’表示使用N位小数的浮点数的字符串格式化语法。列表推导将字符串格式应用于每个元素。

例子

在下面的例子中,我们创建了一个包含小数字的NumPy数组,并利用字符串格式化来减少科学计数法的使用。

import numpy as np

array = np.array([1e-10, 2e-10, 3e-10])
formatted_array = ['{:.10f}'.format(x) for x in array]
print(formatted_array)

输出

['0.0000000001', '0.0000000002', '0.0000000003']

优点

  • 为每个元素提供特定的格式化应用。

  • 适应替代格式化要求。

缺点

  • 输出字符串列表,不适合进一步的数值运算。

方法4:使用numpy.set_printoptions

numpy.set_printoptions函数可以为NumPy数组设置全局打印选项,包括减少科学计数法。这种方法有助于修改代码中所有NumPy数组的默认打印行为。

语法

np.set_printoptions(suppress=True, precision=N)

在这里,suppress=True禁用科学计数法,precision=N设置要保留的小数位数。

样例

在下面的例子中,我们创建一个包含小数的NumPy数组,并使用numpy.set_printoptions来减少科学计数法的使用。

import numpy as np

np.set_printoptions(suppress=True, precision=10)
array = np.array([1e-10, 2e-10, 3e-10])
print(array)

输出

[0.0000000001 0.0000000002 0.0000000003]

优点

  • 修改代码中所有NumPy数组的默认打印行为。

  • 输出仍然是具有数值的NumPy数组,适合进一步进行数值操作。

缺点

  • 影响代码中所有NumPy数组,在特定情况下可能会产生不希望的影响。



  • 如果输出需要特定的字符串格式,则可能不适用。

结论

在本指南中,我们探讨了使用各种技术来减少NumPy数组中微小数字的科学计数法用法。我们研究了使用字符串格式化的numpy.vectorize,利用numpy.ndarray.round,利用字符串格式化和利用numpy.set_printoptions等方法。每种方法都提供了一种简单高效的方法来显示不带科学计数法的NumPy数组,具体取决于您的特定需求和偏好。

通过了解每种方法的优点和缺点,您可以选择最适合您特定需求的方法。



Python 精选笔记
如何使用Python Pandas按照共同的键合并多个TSV文件?如何使用PIL将透明的PNG图片与另一张图片合并?Python中嵌套函数是如何工作的?Python中的全局变量和局部变量?在Python函数中如何使用全局变量?如何从Python对象中获取源代码?如何在Python中返回一个函数?如何在Python中安装matplotlib?Python - 分割包含散乱字符的字符串Python - 记录列表XORPython – 向记录的末尾添加数据Python - 键值大于K的记录在Python中垂直打印列表Python - 列表中字符串平均长度Python列表中的交替循环Python程序实现混淆词游戏Python-记录联合Python程序计算列表中元组的重复项Python程序:将字符串的字符转换为相反的大小写Python - 打印给定年份列表中的闰年数量Python - 打印所有子列表中的共同元素Python - 删除嵌套列表中的所有元素如何在Python列表中检查空格?在Python中引发异常到另一个异常Python字符串中的范围复制Python程序计算包含列表的列表中列表的数量修改给定Python列表中的重复值Python - 检查元素是否在指定范围内出现从Python的元组列表中删除所有字符串如何使用Pygame添加颜色呼吸效果?如何在Bokeh中添加颜色条如何在Bokeh中添加颜色选择器?使用Python程序显示带有星边框的数字半菱形图案Python使用ipaddress模块确定给定的IPv4地址是否为保留地址使用ipaddress模块的Python程序来确定给定的IP地址是公网还是私网Python程序通过平方和连接给定数字的奇数位数来创建一个OTPPython程序创建以零为中心的列表Python程序计算字符串中的字符数Python程序将米转换为码,反之亦然Python程序:统计文本文件中的元音、行数和字符数Python程序计算文本文件中的单词数量Python程序,用于计算文本文件中空格的数量将字典的值转换为字符串的Python程序Python程序将浮点数转换为指数Python程序将整数转换为指数Python程序将整数转换为罗马数字将整数列表转换为字符串列表的Python程序Python程序将XML转换为字典Python程序:通过重复键对应的值次数将字典转换为列表将Dict of list转换为CSV的Python程序使用正则表达式统计Python程序中大写字母、小写字母、特殊字符和数字值的个数Python元组的并集Python - 嵌套和混合列表中的类型转换Python - 将列表转换为单值列表的元组如何在Python中打印上标和下标?如何在Python中打印多个参数?如何在Plotly-Python中将图例定位在图表内部?如何使用Pandas绘制时序图表?如何使用SciPy在Python中绘制Ricker曲线?如何在Python列表中删除True值?如何使用Python将字典的值转换为绝对值?如何使用Python将字典转换为K个大小的字典?如何使用Python将浮点数舍入到2位小数?如何在Python中将Excel转换为CSV如何在Python中对元组进行索引和切片?如何在Python中判断一个对象是否有属性?在Python中创建实例对象如何使用Python获取城市的经纬度?如何在Python中获取整数输入?如何交换给定 NumPy 数组的列?如何使用NumPy抑制对小数的科学计数法使用?如何使用Python将XML数据存储到MySQL数据库中?如何在Pandas DataFrame中减去两列?如何在Pandas DataFrame中标准化数据?如何堆叠多个Pandas DataFrames?如何使用scikit-learn的train_test_split()函数拆分数据集如何在Python中分割数据以进行训练和测试,而不使用Sklearn在Python set中找到最大值和最小值Python程序:找到长方体的体积、表面积和空间对角线如何在Python程序中获取字符串的K个可能切片如何使用Altair在Python中制作密度图?生成一次性密码(OTP)的Python程序Python程序:找出数组中可被给定数整除的元素的XOR寻找巨大最大公约数(Jumbo GCD)子数组的Python程序如何在OpenCV Python中查找图像轮廓的边界矩形?如何在Python脚本所在的目录中打开文件?如何在Anaconda中安装Python包?如何在OpenCV Python中旋转图像?如何给定完整路径导入Python模块?如何在Python中从另一个函数调用变量?使用Python的Matplotlib在X轴上绘制日期如何在Python中不使用math模块进行平方根运算?如何在Python Tkinter中给Frame添加边框?如何从Python函数返回一个字典?Python程序获取元组中的第一个和最后一个元素如何求一个Python字典的值的总和?Python Pandas - 查找列的最大值并返回其对应的行值机器人流程自动化 - 简介机器学习中的逻辑回归损失函数如何从Python日期中减去一天?将物联网和机器学习相结合,使我们的未来更智能机器学习中的Boosting | Boosting和AdaBoost如何在Python中将时间戳字符串转换为datetime对象?如何在Python中将变量名转换为字符串?什么是Python中的.pyc文件?Python - 检查列表中的所有元素是否相同如何在Python Plotly中设置Y轴的范围?如何将Python日期转换为Unix时间戳?Python中的Turtle绘图编程如何在Python中的给定位置插入一个对象到列表中?如何在Python中进行日期验证?如何使用Python将两个图并排显示?在Python中的方法和函数之间的区别Python中的PYTHONPATH环境变量是什么?如何对Python日期字符串列表进行排序?在Python的Pandas中向现有的DataFrame中添加新列如何将Python元组转换为字典?Python - 使用Pandas读取没有标题的csv文件?如何使用OpenCV Python在图像中检测矩形和正方形?如何使用OpenCV在Python中改变图像的对比度和亮度?如何在Python中将日期时间转换为UTC时间戳?如何列出Python模块中的所有函数?Python程序查找字符串中的所有重复字符使用Python进行文件搜索如何在Python Tkinter中更改按钮大小?如何在Python shell中了解/更改当前目录?如何在Python中检查一个字符是否为大写字母?如何在OpenCV Python中对图像进行归一化?在Python中更新列表如何在Python中生成不重复的随机数?Python中元素的频率列表在Python中for循环和while循环的区别如何在Python的Plotly中绘制多条线在同一Y轴上?如何从Python列表中删除一个对象?如何在Python中使用Matplotlib和Pandas绘制CSV数据?如何在Python中安装OpenCV?Python3程序,用于找到具有相同左右旋转的数字的最长子序列如何在Python字符串中检查空格?Python - 替代前后和Python - 检查浮点字符串Python3程序——在二进制字符串的任意旋转中找到连续放置在开头和结尾的0的最大数量