我有一個文件,當我導入到Mathematica中時,如下所示: {{1,1,n1},{1,2,n2},{1, 3,n3},{2,1,n4},{2,2,n5},{2,3,n6}}其中n1 ... n6是我想要導入的一些數字,如下所示:以矩陣的形式將數據導入到Mathematica中
在每個塊中的第一個數字規定了行和第二列,但它們不是矩陣的一部分。每個塊中只有第三個數字是矩陣的一部分。我怎樣才能做到這一點?
我有一個文件,當我導入到Mathematica中時,如下所示: {{1,1,n1},{1,2,n2},{1, 3,n3},{2,1,n4},{2,2,n5},{2,3,n6}}其中n1 ... n6是我想要導入的一些數字,如下所示:以矩陣的形式將數據導入到Mathematica中
在每個塊中的第一個數字規定了行和第二列,但它們不是矩陣的一部分。每個塊中只有第三個數字是矩陣的一部分。我怎樣才能做到這一點?
如果
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]
有一對夫婦這個問題,我能想到的解釋。
如果你的數據是在常規格式,您希望爲我already directed you toward和Partition
功能對方的回答說明瞭在存儲效率的方式,我建議在ReadList
密切關注及相關功能進行閱讀。
我將重點關注數據不是完全規則的形式,因爲給定的行和列索引對於描述數組中數據的位置是必需的。對於最自然的方法是使用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
功能Normal
可以被用於將SparseArray
轉換爲常規列表-of-列表陣列根據需要:
Normal @ array
{{n1, n2, n3}, {n4, n5, n6}}
另外there is a StackExchange site致力於Mathematica,我鼓勵你去探索。
非常感謝。也適用! –
如果數據被保證填充矩陣,但沒有正確排序,只需應用Sort []應該會得到正確的順序。這可能比sparsearray方法更好(或者,如果您不知道先驗尺寸,也許不會。) – agentp
非常感謝。完美的作品 –