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

Numpy保存CSV文件格式异常,如何正确追加数组到CSV?

解决Numpy数组追加CSV时每行仅一个元素的问题

你创建了包含浮点数和整数的Numpy数组:

array_to_save = np.array([shutter_time, int(nb_frames), np.mean(intensities), np.std(intensities)])

尝试用以下代码追加到frames_stats.csv文件:

with open('frames_stats.csv','a') as csvfile:
    np.savetxt(csvfile, array_to_save, delimiter=',')

但保存后每个值单独占一行:

5.000000000000000000e-01
1.495000000000000000e+03
2.340000000000000000e+02
0.000000000000000000e+00
5.000000000000000000e-01
...

问题原因

np.savetxt默认会把1D数组的每个元素当作独立一行输出,这是它处理一维数据的默认逻辑。

解决方案

要让数组内容成为CSV的一行,需要把1D数组转换成二维数组(形状为(1, N)),同时可以指定输出格式避免科学计数法,让结果更易读。

修改后的代码:

with open('frames_stats.csv','a') as csvfile:
    # 将1D数组包装为二维结构,或用array_to_save.reshape(1, -1)实现
    np.savetxt(csvfile, [array_to_save], delimiter=',', fmt='%.6f,%.0f,%.6f,%.6f')

说明

  • [array_to_save]把原1D数组包装成包含一个子数组的二维结构,np.savetxt会将每个子数组当作一行输出
  • fmt参数可针对不同类型元素指定格式:%.0f对应整数(如帧数),%.6f对应浮点数(如快门时间、均值),可按需调整精度

修改后保存的CSV会变成每行4个值用逗号分隔的格式:

0.500000,1495,234.000000,0.000000
0.500000,1495,234.000000,0.000000
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:16:26