我在一个目录中保存了大量的数据文件(.csv(。我现在想为每个文件拟合和评估几个参数。由于此目录中有超过 300.000 个文件,Mathematica 无法运行我的脚本。我尝试的第一次尝试是将目录设置到这个文件夹,然后我尝试通过"For-loop"单独移植每个文件(对于 i=1,i<=imax,i++,其中 imax 是那里的文件数量(,进行整个拟合评估等,然后再次启动循环并导入第二个文件,....以节省内存。不幸的是,这种方法根本不起作用,Mathematica几乎立即崩溃了。
所以,我现在的问题是,我能否以某种方式处理单个目录中的大量文件而不会耗尽内存?
下面的方法将所有CSV中的所有数据加载到名为data
的函数变量中。 因此,如果您有名为file1.csv
的 CSV 并file2.csv
它们的数据将被加载到名为data["file1.csv"]
和data["file2.csv"]
的变量中。 然后,例如,将每个 CSV 的第一列中的数据读入名为xvalues
的变量中,将每个 CSV 的第二列中的数据读入名为yvalues
的变量。
SetDirectory["C:\Users\yourname\datadirectory"];
files = FileNames["*.csv"];
(data[#] = Import[#]) & /@ files;
xvalues = yvalues = {};
(xvalues = Join[xvalues, data[#][[All, 1]]]) & /@ files;
xvalues = Flatten[xvalues];
(yvalues = Join[yvalues, data[#][[All, 2]]]) & /@ files;
yvalues = Flatten[yvalues];
然后可以计算拟合度。
fit = Fit[Transpose[{xvalues, yvalues}], {1, x}, x]