2017-04-11 54 views
-1

我需要在矩陣中存儲沒有字母的所有數字。另外,數字之間的間距不相等這一事實使得它很難轉換爲矩陣。這是一個pssm矩陣,如果這樣做有幫助,我需要從這個矩陣計算出香農熵。 矩陣的間距看起來是正確的,但這使我很難寫出正確的代碼將其存儲爲2D矩陣。任何幫助將不勝感激。我有一個以下格式的文本文件,需要將它轉換爲python中的二維矩陣。

 A R N D C Q E G H I L K M F P S T W Y V 
1 T -3 -4 -3 -4 -4 -3 -4 -4 -5 -3 -4 -3 -3 -5 -4 -1 8 -5 -4 -3 
2 I -4 -5 -6 -6 -4 -5 -6 -6 -6 7 0 -5 0 -2 -5 -5 -3 -5 -4 2 
3 G -1 -4 -2 -3 -4 -4 -4 7 -4 -6 -6 -3 -5 -5 -4 2 -2 -5 -5 -5 
4 M -3 -4 -5 -6 -4 -2 -5 -6 -4 2 1 -4 10 -3 -5 -4 -2 -4 -4 0 
5 V 0 -4 -5 -5 -3 -4 -4 -5 -5 5 2 -4 0 -2 -4 -3 -2 -4 -3 4 
6 V 4 -4 -4 -4 3 -3 -3 -2 -4 0 -2 -3 -2 -3 -3 -1 -1 -5 -3 4 
7 I -3 -4 -5 -5 -3 -4 -5 -6 -5 6 3 -4 2 -1 -5 -4 -3 -4 -3 2 
8 H -3 -4 0 7 -6 -2 -1 1 5 -6 -6 -3 -5 -5 -4 -2 -3 -6 -4 -5 
9 K 2 0 -1 -1 -3 1 1 -1 -1 -3 -2 3 -2 -3 -1 1 0 -3 -2 -1 

等等爲141行。

+2

如果您有任何代碼可以幫助您自己解決此問題,請將其提供並說明其操作不正確。 – glibdud

回答

0

在你的例子中,間距實際上可以預測 - 但我會假設它不能像你提到的那樣。

聽起來像你可以使用正則表達式的幫助。使用\s+意味着「一個或多個空間」,這應該適合您的需求。確保在正則表達式操作之前或期間擺脫行的開始。

0

分割由新線串,然後用空格:

linesplit = matrix.split("\n") 
grid = list() 
for line in linesplit: 
    grid.append(line.split(" ")) 

然後,如果你不想沿着刻字的頂部和側面:

del grid[0] 
for line in grid: 
    del line[0] 

這是假設你的矩陣每個數字之間有一個空格。如果沒有,請首先在字符串上運行此操作:

import re 
matrix = re.sub("\s+", str(), matrix) 
相關問題