【问题标题】:How to import data from a file as an array in Mathematica?如何在 Mathematica 中将文件中的数据作为数组导入?
【发布时间】:2011-11-19 23:55:36
【问题描述】:

我正在尝试将数据集导入 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}

【问题讨论】:

    标签: import numbers wolfram-mathematica


    【解决方案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]]
    

    【讨论】:

    • 谢谢,out.dat: 5.7 4.3 -1.2 7.8 使用 cc[[1,1]]: cc[[1, 1]] Part::partd: Part specification cc 时出现此错误[[1,1]] 比 \ 对象的深度长。 >> cc[[1, 1]]
    • 你能发布你的新代码吗?我的猜测是您没有使用“表”选项进行导入。
    【解决方案2】:

    这确实取决于 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,[ 和 ] 将参数分隔为函数。

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

    【讨论】:

      【解决方案3】:

      我认为这是你想要的:

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

      【讨论】:

        猜你喜欢
        • 2010-12-29
        • 1970-01-01
        • 1970-01-01
        • 2011-11-23
        • 2014-09-17
        • 1970-01-01
        • 2011-09-07
        • 2019-11-22
        • 1970-01-01
        相关资源
        最近更新 更多