Как импортировать данные из файла в виде массива в Mathematica? - PullRequest
2 голосов
/ 28 января 2010

Я пытаюсь импортировать набор данных в Mathematica. Проблема в том, что я не могу иметь импортированные данные как обычные числа в Mathematica. Они импортируются как «список». Поэтому я не могу использовать их в нужных мне уравнениях:

Import["out.dat", "Data"]
{{5.7, 4.3}, {-1.2, 7.8}}
Array[cc, {2, 2}]
For[i = 1, i <= 2, i++, 
 For[j = 1, j <= 2, j++, 
  cc[i, j] = Take[Import["out.dat", {"Data", i}], {j, j}]]]

Теперь мне нужно c[1,1], чтобы быть 5.7, но это {5.7}, как вы видите:

cc[1, 1]
{5.7}

Ответы [ 3 ]

1 голос
/ 28 января 2010

Это зависит от точного формата содержимого вашего файла данных. Например, если файл содержит только табуляцию чисел (или пробел) и строку, разделенную следующим образом:

5.7   4.3
-1.2  7.8

Тогда утверждение

cc = Import["out.dat"]

загружает данные непосредственно в переменную cc. Затем, используя правильные обозначения для подписки массива, т. Е. [[И]] не [и], вы можете получить доступ к номерам в каждом элементе массива по своему усмотрению. Это очень очень просто. Если ваш входной файл более сложный, вы должны либо (а) упростить его, либо (б) изучить различные опции и параметры для функции Import [].

Как правило, если вы пишете циклы в Mathematica, вы делаете это неправильно.

Форма

c[1,1] = 5.7

для Mathematica является определением функции. Это очень похоже на присваивание элементу в массиве, что означает, что вы можете определить все виды интересных объектов, которые являются функциями, но выглядят как массивы или массивы, которые выглядят как функции. Конечно, это потому, что массив - это функция от индексного пространства до набора элементов. Но для Mathematica [и] разграничить аргументы функции.

Исходя из вашего вопроса и ваших комментариев, я подозреваю, что вы новичок в Mathematica. Электронная документация очень хорошая, но вы должны прочитать ее, чтобы получить какую-либо ценность от нее.

1 голос
/ 28 января 2010

Сначала для доступа к элементу массива используйте "[[]]"

    c = {{5.7, 4.3}, {-1.2, 7.8}};
    c[[1, 1]]
    Out=5.7

Обновление.

c [[1,1]] используется для доступа к 2 размерный массив (матрица) для доступа простое использование массива c [[1]]

    In[27]:= Import["d:\\dat.out", "Table"]    
    Out[27]= {{5.7, 4.3, -1.2, 7.8}}    
    In[28]:= %[[1]]    
    Out[28]= {5.7, 4.3, -1.2, 7.8}    
    In[29]:= IntegerPart[#] & /@ %    
    Out[29]= {5, 4, -1, 7} 
etc...

Обновление 2.

Если cc[1, 1] == {5.7}, то снова использовать селектор элемента массива:

cc[1,1][[1]]
0 голосов
/ 14 февраля 2010

Я думаю, что это то, что вы хотите:

mat = {{5.7, 4.3}, {-1.2, 7.8}};
Do[c[i, j] = mat[[i, j]], {i, 2}, {j, 2}]

Тогда c [1, 1] возвращает 5,7 (например).

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