1

Mathematica にインポートすると、次のようなファイルがあります: {{1,1,n1},{1,2,n2},{1,3,n3},{2,1,n4},{ 2,2,n5},{2,3,n6}} ここで、n1...n6 は次のような行列としてインポートする数値です。

ここに画像の説明を入力

各ブロックの最初の数字は行を指定し、2 番目の数字は列を指定しますが、これらは行列の一部ではありません。各ブロックの 3 番目の数字のみがマトリックスの一部です。どうやってやるの?

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

代わりに、配列内のデータの位置を記述するには、指定された行インデックスと列インデックスが必要であるという点で、データが完全に規則的な形式ではないという考えに焦点を当てます。そのための最も自然な方法はSparseArray、位置と値のRuleペアの形式でデータを受け入れる 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

Mathematica グラフィックス

この関数を使用して、必要に応じて を通常のリストのリスト配列Normalに変換できます。SparseArray

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

また、 Mathematica専用の StackExchange サイトもありますので、ぜひご覧ください。

于 2013-01-06T05:37:29.870 に答える