2010-07-06 36 views
0

我只是一個Python初學者。最近我正在學習使用字典,但我的知識仍然有限。我有這個想法從我的腦海裏冒出來,但我不確定它是否可用於python。我可以在python中使用字典作爲矩陣嗎?

我有3個文件看起來是這樣的:

DOCNO= 5 

nanofluids :0.6841 

introduction:0.2525 

module  :0.0000 

to   :0.0000 

learning :0.0000 





DOCID= 1 

nanofluids :0.0000 

introduction:0.2372 

module  :0.0000 

to   :0.0000 

learning :0.1185 



DOCNO= 12 

nanofluids :0.0000 

introduction:0.0000 

module  :0.5647 

to   :0.0000 

learning :0.2084 

我知道如何存儲在字典中的單個值。例如:

data={5: 0.67884, 1:0.1567, 12:3455} 

但我想現在要做的就是存儲陣列與相應的證件號碼,它看起來像:


import array 

data={ 5:array([0.6841,0.2525,0.0000.0000,0.0000]), 1:array([0.0000,0.2372,0.0000,0.0000,0.1185]), 12:array([0.0000,0.0000,0.5647,0.0000,0.2084])} 

*我的Python v2.6.5似乎並不讓我這樣做*


如果假設上述操作作品,我想要執行點積或矩陣乘積以找出文檔對之間的相似度。我的想法是將陣列安排在3x5矩陣中並乘以5x3的轉置。這將返回一個3x3矩陣,告訴我兩個文檔之間的關係。例如:

[ 5:[0.6841,0.2525,0.0000,0.0000,0.0000], 

1:[0.0000, 0.2372,0.0000,0.0000,0.1185], 

12:[0.0000,0.0000,0.5647,0.0000,0.2084] ] 

,並通過其轉乘(我不知道如何做到這一點),結果將是對應於「DOCNO」由「DOCNO」 3x3矩陣。

底線是我需要能夠檢索DOCNO。例如(5,1)顯示了文檔5和1之間的關係。或者(1,12)顯示了文檔1和12之間的關係。我不確定這是否可以在python中使用,但其他類似的分辨率將不勝感激。謝謝你的時間。

+1

你應該看看[** NumPy **](http://numpy.scipy.org/)。它被設計來做矩陣計算。 – 2010-07-06 16:18:28

回答

3

首先,你應該看看Python documentation for arrays。您的示例代碼有三個錯誤:

  • 您已導入數組模塊,但不是數組類。試試這個:

    from array import array

  • 你有0.0000.0000在你的列表中的浮動。

  • array需要兩個參數;一個typecode和初始化值。將您的array([...])呼叫更改爲array('f', [...])調用,並且它應該起作用。

但事實告訴我們,Python沒有很多內置的基本工具(你可以隨時寫自己的)。如果你在做矩陣代數,你應該使用NumPy

它可以處理arraysmatrices以及所有相關的轉換。

0

要解決您的數據分配新建分配FY嘗試這樣的:

from array import array 

data={ 5:array('d',[0.6841,0.2525,0.0000,0.0000,0.0000]), 1:array('d',[0.0000,0.2372,0.0000,0.0000,0.1185]), 12:array('d',[0.0000,0.0000,0.5647,0.0000,0.2084])} 

那這樣或那樣的,我會用NumPy的進行計算的休息。

相關問題