Import 这是一个重要的问题

Import 这是一个重要的问题,import,export,wolfram-mathematica,Import,Export,Wolfram Mathematica,我从Mathematica导出了矩阵 导出[all.txt,all] i、 e。 矩阵是s.t {{1,2,3,4},{1,2,3,4}} 我试图将其导入回,但无法使用 Import["text.txt"] {1, 2, 3} {1, 2, 3} , 或 我不能用它,因为它不是矩阵。如何将其导入回矩阵?所以我可以使用%[[1]][[1]]这样的命令来获取行和列很久以前,从第六版开始,我就注意到Mathematica对*.txt文件有一些问题。使用后缀.dat。它已经被证明是矩阵或任何东西的

我从Mathematica导出了矩阵

导出[all.txt,all]

i、 e。 矩阵是s.t

{{1,2,3,4},{1,2,3,4}}
我试图将其导入回,但无法使用

Import["text.txt"]

{1, 2, 3}
{1, 2, 3}
,


我不能用它,因为它不是矩阵。如何将其导入回矩阵?所以我可以使用%[[1]][[1]]这样的命令来获取行和列

很久以前,从第六版开始,我就注意到Mathematica对*.txt文件有一些问题。使用后缀.dat。它已经被证明是矩阵或任何东西的问题证明。

文件扩展名.txt没有问题,但是当Mathematica导出和导入文本文件时,它假定它是字符串。你可以看到:

Export["C:\\test.txt", {{1, 2, 3}, {4, 5, 6}}]
Head[Import["C:\\test.txt"]]
(* Output: String *)
相反,您可以按照Eugene的建议更改文件扩展名:

Export["C:\\test.dat", {{1, 2, 3}, {4, 5, 6}}]
Head[Import["C:\\test.dat"]]
(* Output: List *)
请注意,它甚至不会使用它不理解的文件扩展名:

Export["C:\\test.xyz", {{1, 2, 3}, {4, 5, 6}}]
Head[Import["C:\\test.xyz"]]
(* Output: Export::type: "List cannot be exported to the "XYZ" format." *)
实际上,正在发生的是导入和导出试图从文件扩展名推断出要使用的类型。您始终可以手动指定该类型:

Export["C:\\test.txt", {{1, 2, 3}, {4, 5, 6}},"List"]
Head[Import["C:\\test.txt"]]
(* Output: String *)
类型列表和类型字符串的输出文件将是相同的,因此在导入文件时也需要指定它:

Export["C:\\test.txt", {{1, 2, 3}, {4, 5, 6}},"List"]
Head[Import["C:\\test.txt","List"]]
(* Output: List *)
请注意,即使您忘记使用指定的类型列表导出,这也会起作用,因为输出文件仍然可以作为列表导入

在最坏的情况下,您始终可以尝试以下方法:

Export["C:\\test.txt", {{1, 2, 3}, {4, 5, 6}}]
ToExpression[Import["C:\\test.txt"]]
(* Output: {4,5,6} *)
这不太管用,只会让你排在最后一排。你得有点迂腐:

Export["C:\\test.txt", {{1, 2, 3}, {4, 5, 6}}]
ToExpression[StringSplit[Import["C:\\test.txt"], "\n"]]
但在所有这些可能性中,我提到的最好和最简单的方法是简单地告诉Import命令,您拥有的是一个列表:

Import["C:\\test.txt","List"]
这就是为什么在导入时存在可选参数的原因。它是可选的原因是,我们可以偷懒,让Mathematica决定.txt文件是字符串,.dat文件是列表,但如果您不希望Mathematica这样做,即Mathematica做得不对,您只需指定列表或导入的任何类型的文件即可

您几乎正确地理解了这一点,但您使用的类型数据实际上是为了从文档中指示:

通用Wolfram语言形式的数据列表、字符串等


这意味着你不会得到太多的帮助-Mathematica仍然会判定这是一个字符串。您想要的类型是List。

Try Table作为要导入的第二个参数:Try.m或甚至.mx(如果只有mathematica需要读取它)
Export["C:\\test.txt", {{1, 2, 3}, {4, 5, 6}}]
ToExpression[StringSplit[Import["C:\\test.txt"], "\n"]]
Import["C:\\test.txt","List"]