You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

打印二维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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:27:00