2016-05-04 4 views
0

私はtexttableでテーブルを描画しようとしています。私は、テーブルの内容を整理するために、コードのこの部分を持っている:あなたが見るように、彼らは私の質問には無関係であるため、texttable drawはコンテンツのフォーマットを変更します

def get_int_avg_pre(r_list, p_list): 
li = [] 
recall_list = [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] 
for recall in recall_list: 
    r_ind = 0 
    for i in r_list: 
     if float(i)/100 >= recall: 
      r_ind = r_list.index(i) 
      break 
    pre = max(p_list[r_ind:]) 
    li.append([str(recall), "{:.2f}".format(float(pre)/100)]) 
return li 


def print_logs(qs, rs): 
    t = Texttable() 
    inter_val = get_int_avg_pre(r_list, p_list) 

    printed_list = [['Recall', 'Interpolated Precision']] 

    for el in inter_val: 
     printed_list.append(el) 

    t.add_rows(printed_list) 

    print t.draw() 

私は、いくつかの部分をスキップ。このスクリプトでは、テーブルの内容は書式の点で私が望むものではありません。出力は以下の通りで、print_listの正確な値を見ることができます。誰かが私が間違っていることを理解するのを助けることができますか?

printed_list:

[['Recall', 'Interpolated Precision'], ['0.0', '1.00'], ['0.1', '1.00'], ['0.2', '1.00'], ['0.3', '0.50'], ['0.4', '0.50'], ['0.5', '0.50'], ['0.6', '0.38'], ['0.7', '0.38'], ['0.8', '0.36'], ['0.9', '0.36'], ['1.0', '0.36']] 

表:

Table

答えて

0

問題がないタイプ、列の値に指定されない場合、自動タイプがそれに割り当てられていることでした。これは、ほとんどの可能な型が評価されることを意味します。 1.0または0.0はfloatよりも整数に近いのでintに変換されました。私の場合は解決策が

tt.add_rows(printed_list) 

与えるだけの行の前に

t.set_cols_dtype(["t", "t"]) 

を使用していた3

休息のために、彼らはfloatに近かったとデフォルトの精度に応じて変換しました特定のフィールドタイプ私はのテキストを私の場合と同じように使用しましたが、私は既に入力をフォーマットしていましたが、texttableはフィールドタイプとして設定可能な精度を持つfloatをサポートしています。

関連する問題