使用python从矩阵中提取一对值

时间:2011-08-24 17:54:03

标签: python

我的矩阵如下..

           31348   439352   6077    4619722    60825
31348      1        0.304   0.126    0.12      0.162
439352     0.304    1       0.101    0.095     0.316
6077       0.126    0.101   1        0.473     0.219
4619722    0.12     0.095   0.473    1         0.256
60825      0.162    0.316   0.219    0.256     1

现在我必须编写python脚本来提取具有> 0.2的对 结果应如下

439352, 31348  0.304
60825, 439352  0.316

.....

任何人都可以告诉我该怎么做..

提前致谢

NI

1 个答案:

答案 0 :(得分:1)

mylist = []

with open('test.csv') as f:
    keys = f.readline()
    keys = keys.split()

    for line in f:
        a = line.split()
        mylist.append(a[1:])

for idx1, item in enumerate(mylist):
    for idx2, number in enumerate(item):
        if float(number) > 0.2:
            print "%7s, %7s  --> %7s" %(keys[idx1], keys[idx2], number)

产地:

  31348,   31348  -->       1
  31348,  439352  -->   0.304
 439352,   31348  -->   0.304
 439352,  439352  -->       1
 439352,   60825  -->   0.316
   6077,    6077  -->       1
   6077, 4619722  -->   0.473
   6077,   60825  -->   0.219
4619722,    6077  -->   0.473
4619722, 4619722  -->       1
4619722,   60825  -->   0.256
  60825,  439352  -->   0.316
  60825,    6077  -->   0.219
  60825, 4619722  -->   0.256
  60825,   60825  -->       1

此代码表示矩阵的x和y索引是相同的(如您的示例中所示)。否则,您需要准备两个不同的密钥列表。

注意:我的test.csv文件只是一个文本文件,我在其中复制粘贴了您的矩阵(实际上它不是.csv文件)。如果您使用逗号分隔值,则应相应地修改拆分方法。