Как импортировать данные из файла в виде списка / массива в Mathematica - PullRequest
6 голосов
/ 22 декабря 2009

У меня есть данные (точки), которые я должен импортировать из другой программы в 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. Возможно ли преобразовать строку, например, "5" в число, в Mathematica? Если да, то как?
  2. Можно ли преобразовать строку типа "{1, 2, 3}" в список в Mathematica? Если да, то как?
  3. Можно ли загрузить файл CSV в виде списка списков, как показано выше в Mathematica?

Спасибо

Ответы [ 2 ]

9 голосов
/ 22 декабря 2009

Преобразование строк в выражения выполняется с помощью ToExpression . Если у вас есть простой текстовый файл foo.txt с форматированием, как в вашем примере, то просто импортируйте его в Mathematica с помощью Get , т.е. << /path/to/foo.txt; будет импортировать и оценивать data так, как вы хочу, нет необходимости в переводе текста в выражения.

5 голосов
/ 22 декабря 2009

Попробуйте отформатировать файл данных следующим образом:

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
...

Таким образом, вы можете использовать CSV-импорт Mathematica. Затем разбейте каждую строку на список точек после импорта.

Partition[#, 3]& /@ Import["file.csv", "CSV"]

Также имейте в виду, что Mathematica делает научную запись иначе, чем C (или любой другой язык, который вы используете для записи файла данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...