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

为什么Numpy.fromfile无法读取文件中的全部数值?

问题根因

你遇到的报错和少读1个数值的问题,核心是np.fromfile的文本读取逻辑缺陷:

  • np.fromfile设计初衷是更高效读取二进制数组文件,当你用文本模式打开文件、指定sep参数读取纯文本数值时,对文件末尾的空白(空格、换行、制表符等)识别存在bug:如果文件末尾多了一个空白分隔符,函数会判定为还有一个待读取的数值,但是读取不到有效内容,就会跳过最后一个有效数值,同时抛出你看到的DeprecationWarning。
  • 部分Windows平台下,文本模式r打开文件时的自动换行符转换,也可能引入不可见字符干扰分隔识别,触发该问题。
解决方案

方案1(推荐):改用np.loadtxt读取文本数值文件

np.loadtxt是专门针对纯文本格式数值数组设计的读取函数,会自动处理首尾空白、多空格分隔、换行符等异常情况,不会出现少读问题:

import numpy as np
a = np.loadtxt('commemi2d0.1.node', dtype=np.float64)

方案2:坚持用np.fromfile的调整方法

如果必须用np.fromfile,可以通过两种调整规避问题:

  • 先读取文件内容清理首尾空白,再用np.fromstring解析:
with open('commemi2d0.1.node', 'r') as fid:
    content = fid.read().strip()
a = np.fromstring(content, dtype=np.float64, sep=" ")
  • 改用二进制模式打开文件,避免换行符转换干扰:
with open('commemi2d0.1.node', 'rb') as fid:
    a = np.fromfile(fid, dtype=np.float64, sep=" ")

内容的提问来源于stack exchange,提问作者kaustav ghosal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:18:03