我有一个函数f[a]
。我通过Table
运行它来生成一个巨大的值列表,以便以后在C程序中用作查找表。我想将其导出为CSV,这样我就可以将其复制/粘贴到我的代码编辑器中并快速将其转换为C数组(我只需要将它包装成花括号并给它命名):
Export["myfile.csv", Table[ f[a], {a, 0, 6} ], "CSV" ];
我想要的是:
0, 1, 2, 3, 4, 5, 6
等等,但我最终得到了这个:
0
1
2
3
4
5
6
每个条目都在新行上。我错过了什么简单明了的事情?
谢谢!
答案 0 :(得分:12)
您可以使用更通用的"Table" format导出并指定行分隔符。例如:
Export["myfile.csv", Table[f[a], {a, 0, 6}], "Table", "LineSeparators" -> ", "]
FilePrint["myfile.csv"]
(* Returns:
f[0], f[1], f[2], f[3], f[4], f[5], f[6]
*)
您可能还需要指定"FieldSeparators"
选项,"Table"
格式的默认值为"\t"
。
答案 1 :(得分:6)
如果您的导出对象是单个列表,则可以避免修改其元素,并将其包装在List
中:
Export["myfile.csv", List @ Table[f[a], {a, 0, 6}]]
答案 2 :(得分:4)
这应该做你想要的:
Export["myfile.csv", Transpose@Table[{f@a}, {a, 0, 6}], "CSV"]
您的方法将产生一个列向量,这会导致每一行被写在一个新行上。将表创建为行向量可以解决此问题。在这种情况下,每个列都用逗号分隔。
创建列表列表似乎是一种笨重的方式,但这就是Mathematica无论如何在内部对待它的方式。如果您从代码中导入CSV文件:
Import["myfile.csv"]
Out[1]={{0}, {1}, {2}, {3}, {4}, {5}, {6}}
你看到Mathematica已经自动将每个元素填充到一个列表中。所以它必须以这种方式填入列表中,或者像Mr.Wizard's answer一样填充。
答案 3 :(得分:3)
如何使用Partition
?
f[x_] = Sin[x/10.];
Export["C:\\Users\\Sjoerd\\Desktop\\myfile.csv",
Partition[Table[f[a], {a, 0, 600}], 30],
"CSV"
];