Как импортировать данные из файла в виде списка / массива в Mathematica

У меня есть данные(точки), которые я должен импортировать из другой программы в 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},
        }
    }

Как бы вы посоветовали мне поместить данные в промежуточный текстовый файл? И что я должен использовать для импорта? Я попытался импортировать ["mytext.txt", "List"], имея мой текстовый файл с чем-то в форме, показанной выше, но, похоже, Mathematica рассматривает точки как строки, и я ничего не могу с ними сделать. Есть ли способ конвертировать строки в произвольные данные, как это возможно на других языках (при условии, что они действительны в этом новом типе данных)?

резюме:

  1. можно ли преобразовать строку, например, "5" в число, в Система Mathematica? Если да, то как?
  2. можно ли преобразовать строку типа " {1, 2, 3}" в список в Mathematica? Если да, то как?
  3. можно ли загрузить CSV-файл в виде списка списков, как показано выше в Mathematica?

спасибо

2 ответов


преобразование строк в выражения выполняется с помощью ToExpression. Если у вас есть текстовый файл foo.txt, с форматированием как в вашем примере, а затем просто импортировать его в Mathematica с Get, то есть,<< /path/to/foo.txt; импорт и оценки 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
...

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

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

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