打印二维numpy浮点数组仅显示整数,如何输出完整浮点值并保留垂直排版
问题根源
你初始化数组X时使用了全整数的列表推导式生成初始值,numpy会自动推断该数组的数据类型为整数类型,后续向数组赋值浮点数时会被自动截断为整数,本质是存储阶段就丢失了浮点精度,并非打印设置的问题。
解决方法
方法1:初始化时指定浮点类型(推荐)
将数组初始化语句替换为np.zeros写法并指定浮点类型,完全保留数组垂直展示的效果,无需改动其他业务逻辑:
# 替换原来的 X = np.array([[0 for x in range(w)] for y in range(h)]) X = np.zeros((h, w), dtype=np.float64)
修改后直接打印即可输出完整浮点数值。
方法2:调整打印精度(可选)
如果需要自定义打印时显示的小数位数、关闭科学计数法,可以在打印前添加numpy打印配置:
# 示例:设置保留4位小数,关闭小数值的科学计数法展示 np.set_printoptions(precision=4, suppress=True) print(X)
修改后完整可运行代码
import numpy as np MPass = 100 MPL = 25 ME = 120 Mwob = ME + MPL + MPass rho = 1.225 g = 9.8 R = 0.3 pi = 3.14159 A = pi * R** 2 Aduct = 1.5 * A Wwob = Mwob * g Mb = 300 e = 400 Nfan = 12 w, h = 4, 101 # 仅修改初始化语句,指定浮点类型 X = np.zeros((h, w), dtype=np.float64) x = 0 while Mb < 401: Wb = Mb * g Wt = Wb + Wwob Mt = Mb + Mwob Pav = e * Mb Pav_fan = Pav/Nfan vi = (Pav_fan/(2*rho*Aduct))**(1/3) Tmax_fan = 2 * rho * Aduct * vi**2 Ttmax = Tmax_fan * Nfan Fnet = Ttmax - Wt X[x][0] = Mb X[x][1] = Fnet X[x][2] = Mt a = Fnet/Mt if a < 0: t = 0 else: t = ((2*762)/a)**0.5 X[x][3] = t x = x + 1 Mb = Mb + 1 # 可选:调整打印配置 np.set_printoptions(precision=4, suppress=True) print(X)
内容的提问来源于stack exchange,提问作者iswimshark
相关产品推荐
相关产品推荐

