Как импортировать данные из файла в виде списка / массива в 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 рассматривает точки как строки, и я ничего не могу с ними сделать. Есть ли способ конвертировать строки в произвольные данные, как это возможно на других языках (при условии, что они действительны в этом новом типе данных)?
резюме:
- можно ли преобразовать строку, например, "5" в число, в Система Mathematica? Если да, то как?
- можно ли преобразовать строку типа " {1, 2, 3}" в список в Mathematica? Если да, то как?
- можно ли загрузить 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 (или любой язык, который вы используете для записи файла данных.