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
相关产品推荐
相关产品推荐

