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

6

我有一些数据(点),需要从另一个程序导入到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},
        }
    }

你会如何建议我将数据放入中间文本文件中?我应该使用什么导入它?我已经尝试过使用Import["mytext.txt", "List"],并且我的文本文件以上面显示的形式包含一些内容,但似乎Mathematica将点视为字符串,我无法对它们进行任何操作。是否有一种方法可以像其他语言中那样将字符串转换为任意数据类型(只要它们在该新数据类型中有效)?
总结: 1. 在Mathematica中,是否可以将字符串(例如“5”)转换为数字?如果可以,如何操作? 2. 在Mathematica中,是否可以将类似“{1,2,3}”这样的字符串转换为列表?如果可以,如何操作? 3. 是否可以在Mathematica中将CSV文件加载为像上面显示的列表列表?
谢谢
2个回答

10

使用ToExpression将字符串转换为表达式。如果您有一个格式如您示例中的普通文本文件foo.txt,则只需使用<< /path/to/foo.txt;将其导入Mathematica,即可按照您想要的方式导入和评估data,无需进行文本到表达式的翻译。


2
数据 = ToExpression[Import["/文件夹/你的导入文件.txt"]]; - Christoph

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(或您用于编写数据文件的任何语言)不同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接