【问题标题】:Can i use dictionaries as matrices in python?我可以在 python 中使用字典作为矩阵吗?
【发布时间】:2010-07-06 16:11:13
【问题描述】:

我只是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] ]

乘以它的转置(我不知道该怎么做),结果将是 3x3 矩阵,对应于“DOCNO”和“DOCNO”。

底线是我需要能够检索 DOCNO。例如,(5,1) 显示了文档 5 和 1 之间的关系。或者 (1,12) 显示了文档 1 和 12 之间的关系。我不确定这在 python 中是否可行,但其他类似的分辨率将不胜感激。谢谢你的时间。

【问题讨论】:

  • 你应该看看 [ NumPy ](numpy.scipy.org) 。它旨在进行矩阵计算。

标签: python arrays


【解决方案1】:

首先,您应该查看Python documentation for arrays。您的示例代码存在三处错误:

  • 您已经导入了数组模块,但没有导入数组类。试试这个:

    from array import array

  • 您的列表中有 0.0000.0000 作为浮点数。

  • array 接受两个参数;类型代码和初始化值。将您的 array([...]) 调用更改为 array('f', [...]) 调用,它应该可以工作。

但说实话,Python 并没有很多内置的基本工具(您始终可以自己编写)。如果你在做矩阵代数,你可能应该使用NumPy

它可以处理arraysmatrices,以及所有相关的转换。

【讨论】:

    【解决方案2】:

    要修复您的数据分配,请尝试以下操作:

    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 进行其余的计算。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      相关资源
      最近更新 更多