python csv 写入太多小数

问题描述 投票:0回答:1

一个经过充分讨论的问题,但找不到合适的答案。 使用代码将 3D 向量的点 (n,3) 的浮点列表写入文件:

...
with open(filename,"w") as f:
    csvw=csv.writer(f,delimiter=";",quotechar='"')
    for point in points:
        csvw.writerow(point)

给出文件内容:

 0.04471017781221634;0.0;0.999
-0.05707349435937544;-0.052283996037127314;0.997
 0.008731637417420734;0.09949250478307754;0.995
 0.0718653614139638;-0.09373563798705578;0.993
 ...

对于一百万个点来说这是浪费内存。使用二进制编码并不容易转移到其他程序。所以我更喜欢更紧凑的格式,例如:

 0.044;0.0;0.999
-0.057;-0.052;0.997
 0.008;0.099;0.995
 0.071;-0.093;0.993
 ...

这里小数点被截去,四舍五入为佳。 如何更改或扩展代码?预先感谢。

python csv digits
1个回答
0
投票

另请参阅

Python 有一个内置的 round,它允许您通过第二个参数指定位数。所以你的代码将变成,假设每个点确实只是你的维度列表,如

[0.04471017781221634,0.0,0.999]

with open(filename,"w") as f:
    for point in points:
        rounded_point = [round(dim, 3) for dim in point]
        csvw.writerow(rounded_point)
© www.soinside.com 2019 - 2024. All rights reserved.