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

时间:2009-12-22 06:11:22

标签: 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},
        }
    }

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

回顾:

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

    由于

2 个答案:

答案 0 :(得分:9)

使用ToExpression将字符串转换为表达式。如果您有一个纯文本文件foo.txt,其格式与示例一样,那么只需将<< /path/to/foo.txt;导入Mathematica,即data将导入并评估{{1}}你想要的方式,不需要文本到表达翻译。

答案 1 :(得分: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
...

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

Partition[#, 3]& /@ Import["file.csv", "CSV"]

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