我循环遍历文件,对于每个文件,我计算了一个包含4000多个(固定数字)功能的列表。这些功能由函数计算并返回为numpy.array
我想写一个CSV文件,每个文件有一行(每行一个numpy.array
,包含4000多个元素)。
我目前正在使用Python的csv
库,即使我的数组已舍入(感谢np.around
),CSV文件也包含大量数字的数字,例如0,302499999999999
代替0,3025
我知道这可能来自Python中的floating points limitations,但我想知道是否有任何方法可以避免这种情况(通过将其写成字符串?)在输出文件中。
以下代码示例重现问题:
import numpy as np
import csv
for i in range(10) :
row = np.around(np.random.random(4000), decimals=5)
with open('output.csv', "ab") as fp:
wr = csv.writer(fp, dialect='excel')
wr.writerow(row)
答案 0 :(得分:3)
您可以像这样使用numpy.savetxt()
:
import numpy as np
with open('output.csv', 'w') as fh:
for i in range(10): # loop over features
row = np.random.random(4000)
np.savetxt(fh, row.reshape(1, -1), fmt='%.5e', delimiter=',')