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

使用np.savetxt给CSV文件添加单个表头时重复出现的问题解决

解决CSV文件表头重复添加的问题

我看到你遇到的问题了——每次用np.savetxt循环写入CSV文件时,表头被重复添加到了每一行,这确实很头疼!问题的根源在于你每次循环都调用了带header参数的np.savetxt,并且以追加模式打开文件,导致每一行数据前都被插入了表头内容。

下面提供两种实用的解决方案,你可以根据数据量大小选择:

方案1:分两次写入(适合大数据量)

先判断文件是否存在,只在文件首次创建时写入表头,之后循环只写入图片数据,避免重复添加表头。

import os
import cv2
import numpy as np

IMG_DIR = 'path to the images'
csv_path = 'Data.csv'

# 第一步:仅在文件不存在时写入表头
if not os.path.exists(csv_path):
    # 获取一张示例图片,计算总像素数来生成对应表头
    sample_img = cv2.imread(os.path.join(IMG_DIR, os.listdir(IMG_DIR)[0]), cv2.IMREAD_COLOR)
    total_pixels = sample_img.flatten().shape[0]
    # 生成类似"pixel_1,pixel_2,..."的表头
    header = ','.join([f'pixel_{i+1}' for i in range(total_pixels)])
    # 创建文件并写入表头
    with open(csv_path, 'w') as f:
        f.write(header + '\n')

# 第二步:循环写入所有图片数据
for img_name in os.listdir(IMG_DIR):
    img_path = os.path.join(IMG_DIR, img_name)
    img_array = cv2.imread(img_path, cv2.IMREAD_COLOR)
    # 将图片转为1行多列的数组(无需转置,直接flatten后reshape即可)
    flattened_img = img_array.flatten().reshape(1, -1)
    # 以追加二进制模式写入数据
    with open(csv_path, 'ab') as f:
        np.savetxt(f, flattened_img, fmt='%d', delimiter=",")

方案2:一次性写入所有数据(适合小数据量)

先把所有图片数据收集到一个numpy数组中,然后一次性写入文件,这样表头只会被添加一次,代码更简洁。

import os
import cv2
import numpy as np

IMG_DIR = 'path to the images'
csv_path = 'Data.csv'

# 收集所有图片的扁平化数据
all_image_data = []
for img_name in os.listdir(IMG_DIR):
    img_path = os.path.join(IMG_DIR, img_name)
    img_array = cv2.imread(img_path, cv2.IMREAD_COLOR)
    all_image_data.append(img_array.flatten())

# 转换为numpy二维数组(每行对应一张图片的像素数据)
data_array = np.array(all_image_data)

# 生成表头
total_pixels = data_array.shape[1]
header = ','.join([f'pixel_{i+1}' for i in range(total_pixels)])

# 一次性写入文件,表头仅添加一次
np.savetxt(csv_path, data_array, fmt='%d', delimiter=",", header=header, comments='')

方案对比

  • 方案1:不会占用过多内存,适合图片数量多、单张图片尺寸大的场景。
  • 方案2:代码更简洁易读,但会把所有数据加载到内存中,适合数据量较小的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 18:47:43