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]上面的输出,但后来我发现了另一个问题.我发现了这个问题,但无法让答案对我有用......
有任何想法吗?提前致谢!
您应该指定导入/导出所需的确切格式,否则 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)