python csv writer用科学计数法写入数组

Posted

技术标签:

【中文标题】python csv writer用科学计数法写入数组【英文标题】:python csv writer writes array in scientific notation 【发布时间】:2017-05-01 04:37:46 【问题描述】:

我有一个浮点数矩阵,我试图将其写入 csv 文件,但是 csv 编写器以科学记数法写入,我想将数字保留为原始记数法,我尝试添加“%.2f " % 但导致以下错误:

"TypeError: 只有长度为 1 的数组可以转换为 Python 标量"

for item in string_color_Values:
   avg_color_values = [ float(item) for item in string_color_Values]

array1t = np.array(avg_color_values)
np.savetxt("test.csv", array1t, delimiter=",")

original:

 [ 0.5258  1.    ]
 [ 0.528   1.    ]
 [ 0.5486  1.    ]
 [ 0.5545  1.    ]
 [ 0.732   1.    ]
 [ 0.7872  1.    ]
 [ 1.      1.    ]]

Csv which i obtain:

1.2270000000035e-01,1.0000000000e+00
2.7639999999790e-01,1.0000000000e+00
etc..

【问题讨论】:

你是在用numpysoley写CSV文件吗?你应该只使用csv 模块。 你确定你使用了正确的语法吗:np.savetxt("test.csv", array1l, "%f.2", delimiter=",") 适合我。 【参考方案1】:

您需要在对np.savetxt 的调用中包含fmt="%g"。这将写入没有尾随零的数字。或者,如果您想要“干净”格式化的数字,您可以使用例如fmt="%.4f"(或您喜欢的任何其他格式)。

import numpy as np
avg_color_Values = np.random.random((10,3))
array1t = np.array(avg_color_Values)
np.savetxt("test.csv", array1t, delimiter=",", fmt = "%g")

默认情况下,np.savetxt 默认格式为%.18e,这将允许写入float64s 而不会丢失精度。

【讨论】:

以上是关于python csv writer用科学计数法写入数组的主要内容,如果未能解决你的问题,请参考以下文章

csv.writer写入文件有多余的空行

将 Python 列表写入 csv 中的列

Python系列Python写csv文件长数字变成科学记数法的解决方案

pandas to_csv:将 pandas 写入 csv 时抑制 csv 文件中的科学记数法

Python 3.3 CSV.Writer 写入额外的空白行

Python,repl.it - 未使用 csv.writer 和 writer.writerow 将详细信息写入文件