Numpy 1e-0.1 小数显示问题修改

本文介绍了如何在TensorFlow中调整输出格式,去除e表示并设置小数点后仅显示四位,以提高输出的可读性。通过np.set_printoptions方法实现,适合日常开发中的美化输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近查看tensor输出的时候,只想看到小数后四位,但是由于tensor输出的是float64位的科学技术法,看起来很难受,如下图所示:
在这里插入图片描述

1.去掉e显示

由于上图很难看出来区别,所以需要转换一下输出方式,去掉e这种表示,在最上面设置一下

np.set_printoptions(suppress=True)

在这里插入图片描述

2.设置四位小数显示

由于小数太多不美观,可以设置只显示4位,代码如下:

np.set_printoptions(precision=4)

效果为:

在这里插入图片描述
这样就会美观好多,大家以后可以常用这两项设置

<think>好的,用户现在问的是Python中如何保留小数。之前他们已经问过math库的用法,现在可能是在实际应用中遇到了格式化输出问题,比如需要控制小数位数显示结果中。我需要先回顾Python中处理小数保留的几种常用方法,确保覆盖同场景。 首先想到的是使用字符串格式化方法,比如format()函数或者f-string,这两种在Python 3.6之后很常见。用户可能对这两种方法有同偏好,应该都介绍一下。例如,使用格式化字符串指定小数点后两位,或者四舍五入到指定位数。 然后是round()函数,过要注意round函数的四舍五入规则,尤其是遇到中间值(如0.5)时的处理,可能和用户预期同,需要提醒一下。例如,round(2.675, 2)可能会得到2.67而是2.68,这是因为浮点数的精度问题。 接下来是decimal模块,特别是当需要精确的小数运算时,比如财务计算,这时候使用Decimal类型会更可靠。但用户如果只是简单显示,可能需要这么复杂,过还是应该提到这个选项,以供有更高精度需求的用户参考。 另外,math库中的函数可能也会涉及到小数处理,但用户之前已经了解math库,所以可能需要关联一下。比如使用floor或ceil函数来向下或向上取整,结合乘法除法来实现保留小数位,但这种方法可能比较繁琐,如直接使用字符串格式化方便。 还要考虑用户可能的错误使用情况,比如格式化时忘记转换类型,或者对round函数的误解。需要指出常见问题,如四舍五入的准确性,以及如何避免。例如,使用decimal模块可以更精确地控制舍入方式。 用户的需求可能仅仅是保留小数,还可能包括如何补零到固定小数位,比如总是显示两位小数,即使第三位是零。这时候字符串格式化的格式说明符就很有用,比如“{:.2f}”会强制显示两位小数足补零。 另外,可能需要比较几种方法的优缺点,帮助用户根据具体情况选择。比如,如果只是输出显示,字符串格式化最方便;如果需要计算后保留指定位数,round函数可能更合适,但要注意其局限性;而高精度计算则需要decimal模块。 最后,总结同方法的适用场景,并给出示例代码,让用户能够直接复制使用。同时提醒注意事项,如浮点数精度问题,避免用户在实际应用中出现意外错误。</think>在Python中保留小数位数主要通过**字符串格式化**和**数值处理函数**实现。以下是5种常用方法,按使用场景分类说明: --- ### 方法1:字符串格式化 (推荐) 使用`format()`或`f-string`直接控制输出格式: ```python num = 3.1415926 # (1) format函数 print("{:.2f}".format(num)) # 输出3.14(自动四舍五入) print("{:.3f}".format(num)) # 输出3.142 # (2) f-string(Python 3.6+) print(f"{num:.2f}") # 输出3.14 print(f"{num:.0%}") # 百分比格式:314%(自动×100) ``` **格式说明符**: `{value:width.precisionf}` - `width`:总位数(含小数点) - `.precision`:小数位数(强制补零) 示例:`f"{3.1:05.2f}"` → `03.10` --- ### 方法2:round函数 四舍五入到指定小数位(注意浮点精度问题): ```python x = 2.675 print(round(x, 2)) # 输出2.67(非预期2.68) print(round(3.14159, 3)) # 输出3.142 ``` ⚠️ **注意**:遇到`.5`结尾时,遵循“银行家舍入法”(偶数优先) `round(2.5)` → 2,`round(3.5)` → 4 --- ### 方法3:decimal模块 (高精度计算) 适用于财务等需要精确小数位的场景: ```python from decimal import Decimal, ROUND_HALF_UP num = Decimal('3.1415926') result = num.quantize(Decimal('0.00'), rounding=ROUND_HALF_UP) print(result) # 输出3.14(严格四舍五入) ``` --- ### 方法4:数学运算截断 通过乘除法手动控制精度: ```python n = 3.1415926 # 保留两位小数(直接截断) truncated = int(n * 100) / 100 # 输出3.14 # 保留三位小数(向下取整) import math truncated = math.floor(n * 1000) / 1000 # 输出3.141 ``` --- ### 方法5:numpy库 (科学计算) 使用`numpy.round`处理数组: ```python import numpy as np arr = np.array([3.14159, 2.71828]) print(np.round(arr, 2)) # 输出[3.14 2.72] ``` --- ### ⚠️ 重要注意事项 1. **浮点精度陷阱**: ```python 0.1 + 0.2 == 0.3 # 返回False(实际0.30000000000000004) ``` 建议用`math.isclose()`比较浮点数: ```python math.isclose(0.1+0.2, 0.3, rel_tol=1e-9) # 返回True ``` 2. **格式化改变原值**:字符串格式化仅改变显示形式,修改实际数值精度 --- ### 方法选择建议 | 场景 | 推荐方法 | |-------|----------| | 简单输出显示 | 字符串格式化 | | 常规四舍五入 | `round()`(注意精度问题) | | 财务精确计算 | `decimal`模块 | | 数组批量处理 | `numpy.round` |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值