2010-07-06 114 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的进行计算的休息。