如何在Mathematica中将文件中的数据作为列表/数组导入

dev*_*ium 6 wolfram-mathematica

我有数据(点),我必须从另一个程序导入到Mathematica,所以我可以绘制它.我可以控制如何将点写入文件,因此我可以以任何我想要的方式放置它们.将它们导入Mathematica的最佳方法是什么?当我要使用StreamDensityPlot时,我必须传递给StreamDensityPlot的变量必须采用以下方式:

data = {
        {
            { a, b, c }, {a, b, c}, {a, b, c},
            { a, b, c }, {a, b, c}, {a, b, c},
            { a, b, c }, {a, b, c}, {a, b, c},
        }
    ...
        {
            { a, b, c }, {a, b, c}, {a, b, c},
            { a, b, c }, {a, b, c}, {a, b, c},
            { a, b, c }, {a, b, c}, {a, b, c},
        }
    }
Run Code Online (Sandbox Code Playgroud)

您如何建议我将数据放入中间文本文件中?我应该用什么来导入它?我已经尝试了导入["mytext.txt","List"],我的文本文件包含上面显示的形式,但似乎Mathematica认为这些点是字符串,我不能对它们做任何事情.有没有办法将字符串转换为其他语言中的任意数据(假设它们在新数据类型中有效)?

概括:

  1. 是否可以在Mathematica中将字符串(例如"5")转换为数字?如果有,怎么样?
  2. 是否可以将像"{1,2,3}"这样的字符串转换为Mathematica中的列表?如果有,怎么样?
  3. 是否可以将CSV文件作为列表列表加载,如上所示在Mathematica中?

谢谢

Tim*_*imo 9

使用ToExpression将字符串转换为表达式.如果您有一个纯文本文件foo.txt,其格式与您的示例相同,那么只需将其导入Mathematica并使用Get,<< /path/to/foo.txt;即将data以您希望的方式导入和评估,无需进行文本到表达式的翻译.

  • data = ToExpression [Import ["/ folder/yourimportfile.txt"]]; (2认同)

rag*_*eld 5

尝试格式化数据文件,如下所示:

A, B, C, A, B, C, A, B, C
A, B, C, A, B, C, A, B, C
A, B, C, A, B, C, A, B, C
...
Run Code Online (Sandbox Code Playgroud)

因此,您可以使用Mathematica的CSV导入.然后在导入后将每一行划分为一个点列表.

Partition[#, 3]& /@ Import["file.csv", "CSV"]
Run Code Online (Sandbox Code Playgroud)

另外,请记住,Mathematica的科学记数法不同于C(或者您用于编写数据文件的任何语言).