For loop 在mathematica中处理目录中的大量文件
我在一个目录中保存了大量数据文件(.csv)。现在我想为每个文件拟合和评估几个参数。由于此目录中有超过300.000个文件,mathematica无法运行我的脚本。我尝试的第一次尝试是将目录设置为此文件夹,然后尝试通过“For循环”单独移植每个文件(对于i=1,i以下方法将所有csv中的所有数据加载到名为For loop 在mathematica中处理目录中的大量文件,for-loop,memory,memory-management,wolfram-mathematica,For Loop,Memory,Memory Management,Wolfram Mathematica,我在一个目录中保存了大量数据文件(.csv)。现在我想为每个文件拟合和评估几个参数。由于此目录中有超过300.000个文件,mathematica无法运行我的脚本。我尝试的第一次尝试是将目录设置为此文件夹,然后尝试通过“For循环”单独移植每个文件(对于i=1,i以下方法将所有csv中的所有数据加载到名为data的函数变量中。因此,如果csv名为file1.csv和file2.csv,则它们的数据将加载到名为data[“file1.csv”]和data[“file2.csv”的变量中。)。然后,
data
的函数变量中。因此,如果csv名为file1.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]
300000个文件太多了。尽管如此,在看不到代码的情况下,我们仍然不清楚Mathematica为何会崩溃。也许在处理完每个文件后,您没有关闭它,并且您的代码没有可用的文件句柄。也许……嗯,代码是空闲的。