将数据从txt导入Mathematica

Dro*_*ror 5 import wolfram-mathematica data-import

请考虑mathematica中的以下列表:

a = {
   {
    {0, 0, 0}, {1, 0, 0}, {1, 1, 0}
    },
   {
    {0, 0, 1}, {1, 0, 1}, {1, 1, 1}
    }
   };
Run Code Online (Sandbox Code Playgroud)

现在,调用:

Export["test.dat", a]
Run Code Online (Sandbox Code Playgroud)

然后

b = Import["test.dat"]
Run Code Online (Sandbox Code Playgroud)

你会看到最后a不等于b.我应该将此视为功能还是错误?

此外,我想导入一个具有以下格式的列表:{P1,P2,P3...,Pn}where Pi={v1,v2,v3,...,vm}和each vi={x,y,z}where x,y,z是表示顶点坐标的数字vi.这应该是多边形列表.

我应该如何设置我的.dat文件以便我可以使用Mathematica阅读它,我应该如何阅读它?我试图模仿Export["test.dat",a]上面的输出,但后来我发现了另一个问题.我发现了这个问题,但无法让答案对我有用......

有任何想法吗?提前致谢!

Sza*_*lcs 5

您应该指定导入/导出所需的确切格式,否则 Mathematica 可能无法猜测正确的格式。

所以你的问题归结为什么文本格式适合存储 3D 数组?

如果您使用 Mathematica,最简单的事情可能是使用 Mathematica 的表达式语法(即Export["data.m", a, "Package"]. 这种格式相对容易用其他语言编写(但解析起来并不容易)。您的另一个选择是为您的 3D 数据创建一些新的易于解析的文本格式,并用 Mathematica 和您需要使用的其他语言为其编写您自己的输入/输出函数。

由于您正在使用的数据的格式是固定的(您总是有坐标三元组),最简单的解决方案可能是在导出之前展平列表,并在导入后对其进行分区,如下所示:

Export["test.txt", Join @@@ a, "Table"]
b = Import["text.txt", "Table"]
Partition[#, 3]& /@ a
Run Code Online (Sandbox Code Playgroud)