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

时间:2013-01-04 22:29:45

标签: matrix wolfram-mathematica

我有一个文件,当我导入Mathematica时,看起来像这样: {{1,1,n1},{1,2,n2},{1,3,n3},{2,1,n4},{2,2,n5},{2,3,n6}}其中n1 ... n6是我想要导入的一些数字,如下所示:

enter image description here

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

2 个答案:

答案 0 :(得分:2)

如果

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]

答案 1 :(得分:1)

我可以想到对这个问题有几种解释。

如果您的数据是常规格式,并且您希望以内存效率的方式阅读它,我建议您仔细查看ReadList及相关功能already directed you towardPartition函数另一个答案说明了这一点。

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

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

Mathematica graphics

函数Normal可用于根据需要将SparseArray转换为常规list-of-lists数组:

Normal @ array
{{n1, n2, n3}, {n4, n5, n6}}

另外there is a StackExchange site致力于 Mathematica ,我鼓励您去探索。