[英]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.