【发布时间】:2016-06-10 18:19:20
【问题描述】:
从数据模拟中导出 CSV 文件时,我们丢失了与记录的数据相关的小数位,导致我们的绘图和值不准确。
收集数据后,将其导入 excel,然后导出为 CSV。数据中最初存在十进制值(例如 1356.00000),但它们并未在 CSV 数据中如此导出。我对这些值使用了curve_fit,并且我发现精度随着十进制值的丢失而大大降低。这就是为什么我要为数据集中的每个元素添加小数点。
有没有办法解决这个问题,使数组中的所有 values 元素都输出为带有十进制值的数组?
import numpy as np
import scipy as sp
import csv
DecayTime = []
DecayCount = []
with open('Half_Life_Run_Decay.csv', 'r') as h:
reader = csv.reader(h, delimiter=',')
for row in reader:
DecayTime4.append(row[0])
DecayCount4.append(row[1])
DecayTime = np.array(DecayTime)
DecayCount = np.array(DecayCount)
【问题讨论】:
-
csv.reader将它们读取为字符串。在附加到DecayTime[]之前尝试将它们转换为float。 -
csv 文件不准确吗?无法获取包含不准确/不精确数据的 csv 文件并修复准确性/精度。另一方面,如果您的意思是在加载 csv 文件时丢失精度,您的问题需要澄清。
-
@TadhgMcDonald-Jensen 收集数据后,将其导入 excel,然后将数据作为 cvs 导出到其中。数据中最初有十进制值(即 1356.00000),但它们没有与数据一起导出。我对这些值使用了curve_fit,并且我发现精度随着十进制值的丢失而大大降低。这就是为什么我要为数据集中的每个元素添加小数点。
-
如果数据在
excel -> csv阶段丢失了精度,您向我们展示了错误的代码,并且“未与数据一起导出”是指实际数字确实导出但为1256.0完全精确? -
numpy.savetxt 将是一个不错的选择,尤其是如果您的工作流程中已经有 scipy。您将对输出格式进行填充控制。