2011-06-10 22 views
1

我剛開始學習使用Python進行編程,並試圖使用Scipy包構造一個稀疏矩陣。我發現有不同類型的稀疏矩陣,但它們都需要使用三個向量,如行,列,數據來存儲;或者如果你想分別爲每個新條目,如S(i,j)= s_ij,則需要啓動給定大小的矩陣。
我的問題是如果有一種方法來存儲矩陣入門,而不需要像字典一樣的初始大小。詞典中的稀疏矩陣

回答

2

您可以使用具有兩個整數元組的普通字典作爲索引。例如:

matrix = {} 
matrix[5, 7] = 1 
matrix[3, 8] = 5 
+1

你不需要圍繞元組的括號 – JBernardo 2011-06-11 03:45:37

+0

謝謝你的回答。我最初將條目保存爲字典,但最終我需要稀疏結構來執行計算,而這正是我之前嘗試在一個步驟中所做的。 我確實發現沒有辦法解決這個問題。 – Diego 2011-06-12 01:29:56

+0

由於JBernardo指出'矩陣[5,7] = 1'更簡潔,但並不明確 – hobs 2013-12-26 00:02:38

2

不可以。Scipy中的任何矩陣,稀疏與否,必須用大小實例化。

+0

謝謝你的回答。我終於意識到,我需要分兩步存儲矩陣,一個用於讀取所有數據,另一個用於存儲,無論採用哪種方法。但現在我對這個程序很滿意。 – Diego 2011-06-12 01:35:45

+0

不客氣。是的,這工作正常。也許你可以使用'max'來快速找到最大的索引。 – 2011-06-12 04:37:03

0
dic={} 
a,b=int(input("Enter the order:")),int(input()) 
for i in range(a): 
    for j in range(b): 
     c=int(input()) 
     if c!=0: 
      dic[(i,j)]=c 
if len(dic)<=(a+b)/2: 
    print("sparse metrix") 
else: 
    print("non sparse metrix") 

for i in range(a): 
    for j in range(b): 
     print(dic.get((i,j),0),end=" ") 
    print()  
+0

我希望這段代碼能幫助你。 – 2016-11-29 02:28:00

+1

請解釋答案,而不是僅僅發佈一個解決方案「我們不是代碼寫作服務」,這樣對未來的其他人也有好處 – 2016-11-29 02:46:13