1

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

在此处输入图像描述

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

4

2 回答 2

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]
于 2013-01-04T22:56:44.190 回答
1

我能想到对这个问题的几种解释。

如果您的数据是常规格式,并且您希望以内存有效的方式阅读它,我建议仔细查看ReadList已经指导您的相关功能以及Partition其他答案说明的功能。

相反,我将关注数据不是完全规则形式的想法,因为给定的行和列索引对于描述数据在数组中的位置是必要的。为此,最自然的方法是使用SparseArrayat 它以位置和值对的形式接受数据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

数学图形

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

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

还有一个 StackExchange 站点专门用于Mathematica,我鼓励您去探索。

于 2013-01-06T05:37:29.870 回答