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

如何将含#EOL分隔符的CSV转换为TensorFlow可用的3D数组

解决方法

你遇到的是特殊分隔符的非标准CSV读取问题,直接用pd.read_csv确实容易出现类型和结构匹配问题,手动按行处理逻辑更简单直观,适合入门场景,完整实现如下:

实现思路

  1. 逐行读取文件,过滤空行和多余的空白字符
  2. 遍历每一行内容,遇到#EOL标记就将之前收集的像素行存入结果列表,重置缓存
  3. 非标记行直接按逗号拆分转为数值,存入当前像素行缓存
  4. 最终直接将结果列表转为numpy数组或TensorFlow张量即可

完整代码

# 导入依赖
import numpy as np
import tensorflow as tf

# 1. 读取文件所有行
file_path = "你的csv文件路径.csv"
with open(file_path, "r", encoding="utf-8") as f:
    # 自动过滤空行,去掉每行首尾的换行、空格
    raw_lines = [line.strip() for line in f if line.strip()]

# 2. 按#EOL分割转换为3D结构
img_data = []
current_row = []
for line in raw_lines:
    if line == "#EOL":
        # 遇到结束标记,保存当前行的所有像素
        img_data.append(current_row)
        current_row = []
        continue
    # 普通行按逗号拆分转为整数,要存浮点数就把int改为float
    pixel_values = list(map(int, line.split(",")))
    current_row.append(pixel_values)

# 3. 转为3D数组/TensorFlow张量
numpy_3d = np.array(img_data)
tf_tensor = tf.convert_to_tensor(numpy_3d, dtype=tf.int32)

# 验证形状,示例数据输出为 (3, 3, 5)
print(numpy_3d.shape)

补充说明

如果你的CSV里的特征值是浮点数,只需要把代码中map(int, line.split(","))里的int替换为float即可,不需要修改其他逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:09:03