【问题标题】:How to import data from a file as list/array in Mathematica如何在 Mathematica 中将文件中的数据作为列表/数组导入
【发布时间】:2010-12-29 00:05:18
【问题描述】:

我有必须从另一个程序导入 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. 是否可以将 CSV 文件加载为 Mathematica 中如上所示的列表列表?

谢谢

【问题讨论】:

    标签: wolfram-mathematica


    【解决方案1】:

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

    【讨论】:

    • data = ToExpression[Import["/folder/yourimportfile.txt"]];
    【解决方案2】:

    尝试像这样格式化您的数据文件:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-23
      • 1970-01-01
      • 2014-09-17
      相关资源
      最近更新 更多