如何在Mathematica中将文件中的数据作为数组导入?

时间:2010-01-28 11:50:12

标签: import numbers wolfram-mathematica

我正在尝试将数据集导入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 个答案:

答案 0 :(得分:1)

首先访问数组元素使用“[[]]”

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

答案 1 :(得分:1)

这取决于dat文件内容的精确格式。例如,如果文件只包含数字标签(或空格)和行分隔如下:

5.7   4.3
-1.2  7.8

然后声明

cc = Import["out.dat"]

将数据直接加载到变量cc中。然后,使用数组下标的正确表示法,即[[和]]不是[和],您可以根据需要访问数组的每个元素中的数字。这非常简单。如果您的输入文件更复杂,您应该(a)简化它,或者(b)研究Import []函数的各种选项和参数。

作为一般规则,如果你发现自己在Mathematica中编写循环,那么你做得不对。

表格

c[1,1] = 5.7

是Mathematica的一个函数定义。它看起来非常类似于对数组中元素的赋值,这意味着您可以定义各种有趣的对象,这些对象是函数但看起来像数组,或者看起来像函数的数组。当然,这是因为数组是从索引空间到元素集的函数。但是对于Mathematica [和]分隔函数的参数。

根据您的问题和您的意见,我怀疑您是Mathematica的初学者。在线文档非常好,但您必须阅读它才能从中获取任何价值。

答案 2 :(得分:0)

我认为这可以满足您的需求:

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(例如)。