2013-07-08 17 views
1

我必須定義一個巨大的稀疏矩陣,該矩陣的行索引是一個大小爲5的向量,該矩陣的列索引也是一個大小的向量5.更具體地說,要檢索此矩陣中的元素,我需要知道兩個向量:定義一個帶有向量作爲內部和外部鍵的字典

  1. 一個是行向量,我們稱之爲(i,j,k,l,m)。其中i=1,...,20,j=1,...,10, k=1,...,10, l=1,...,10, m=1,...,10.
  2. 一個列,我們稱之爲(n,o,p,q,r)。同樣地, n=1,...,20, o=1,...,10, p=1,...,10, q=1,...,10, r=1,...,10

    我 試圖實現字典詞典的想法,其中 的Dict_1字典的每個鍵指向另一個字典, 姑且稱之爲Dict_2。其中Dict_1的密鑰是行的向量密鑰Dict_2是列的向量。

我真的很感激任何提示或幫助定義這本詞典。我看着What is the best way to implement nested dictionaries in Python?,但不能 弄清楚如何將這個想法延伸到我的行和 列鍵是向量的情況。我真的很感謝任何幫助,評論。

+0

什麼是矢量?你是指一個元組? –

回答

1

有爲什麼不是你的字典中,像這樣:

matrix = { (v1,v2):val}

因此,例如:

>>> m = {((1,2,3,4),(9,8,8,2)):"info"} 
>>> m[((1,2,3,4),(9,8,8,2))] 
'info' 

如果您需要像設置: matrix = { v1: { v2:val }},您可以使用一個deafultdict像這樣:

>>> matrix = defaultdict(dict) 
>>> matrix[(1,2,3,4)][(9,8,8,2)] = "info" 
>>> matrix 
defaultdict(<type 'dict'>, {(1, 2, 3, 4): {(9, 8, 8, 2): 'info'}}) 
>>> matrix[(1,2,3,4)][(9,8,8,2)] 
'info' 
+0

謝謝;這有很大幫助。再一個簡單的問題。是否有可能從scipy與dok_matrix做類似的事情?我正在處理稀疏矩陣,如果我可以使用scipy的工具,這將有所幫助。我嘗試以下,但是有錯誤:從收藏從scipy.sparse進口* 導入defaultdict 從SciPy的進口* S = dok_matrix((9,9)) 爲我的range(3):在 對於j範圍(3): 對於範圍(3)中的k: 對於範圍(3)中的l: S [(i,j)] [(k,l)] = i + j + k + 1 – NNsr

+0

對不起很難正確格式化我的評論... – NNsr

相關問題