Matrix 以矩阵形式将数据导入Mathematica

Matrix 以矩阵形式将数据导入Mathematica,matrix,wolfram-mathematica,Matrix,Wolfram Mathematica,我有一个文件,当我导入Mathematica时,它如下所示: {1,1,n1},{1,2,n2},{1,3,n3},{2,1,n4},{2,2,n5},{2,3,n6}其中n1…n6是一些我想作为矩阵导入的数字,如下所示: 每个块中的第一个数字指定行,第二个数字指定列,但它们不是矩阵的一部分。每个块中只有第三个数字是矩阵的一部分。我该怎么做呢?如果 data = {{1, 1, n1}, {1, 2, n2}, {1, 3, n3}, {2, 1, n4}, {2, 2, n5}, {2, 3

我有一个文件,当我导入Mathematica时,它如下所示: {1,1,n1},{1,2,n2},{1,3,n3},{2,1,n4},{2,2,n5},{2,3,n6}其中n1…n6是一些我想作为矩阵导入的数字,如下所示:

每个块中的第一个数字指定行,第二个数字指定列,但它们不是矩阵的一部分。每个块中只有第三个数字是矩阵的一部分。我该怎么做呢?

如果

data = {{1, 1, n1}, {1, 2, n2}, {1, 3, n3}, {2, 1, n4}, {2, 2, n5}, {2, 3, n6}};
你可以简单地做

mat = Partition[data[[All, 3]], 3, 3]

对于这个问题,我可以想到几种解释

如果您的数据是常规格式的,并且希望以节省内存的方式读取,我建议您仔细查看
ReadList
和相关功能,如我和另一个答案所示的
分区
功能

我将转而关注数据不是完全规则的,因为给定的行和列索引是描述数据在数组中的位置所必需的。因此,最自然的方法是使用
SparseArray
at,它以位置和值
规则
对的形式接受数据:

data = {{1, 1, n1}, {1, 2, n2}, {1, 3, n3}, {2, 1, n4}, {2, 2, n5}, {2, 3, n6}};

array = SparseArray[{#, #2} -> #3 & @@@ data];

array // MatrixForm

功能
Normal
可用于根据需要将
SparseArray
转换为常规列表数组:

Normal @ array

我还鼓励您探索Mathematica。

如果保证数据填充矩阵,但排序不正确,只需应用Sort[]即可获得正确的顺序。这可能比sparsearray方法表现得更好(如果你事先不知道维度的话,也可能没有)。非常感谢。完美地工作
{{n1, n2, n3}, {n4, n5, n6}}