簡體   English   中英

在python中寫入csv時限制小數位數

[英]Limit decimals numbers when writing to csv in python

我遍歷文件,並為每個文件計算4000多個(固定數量)功能的列表。 這些功能由函數計算並作為numpy.array返回

我想寫一個CSV文件,每個文件一行(每行是一個有4000多個元素的numpy.array )。

我當前正在使用Python的csv庫,即使我的數組是四舍五入的(感謝np.around ),CSV文件也包含帶有很多數字的數字,例如0,302499999999999而不是0,3025

我知道這可能是由於Python中的浮點數限制所致,但是我想知道在輸出文件中是否有任何方法可以避免這種情況(通過將其編寫為字符串?)。

下面的代碼示例可重現此問題:

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)

您可以像這樣使用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=',')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM