使用包含矩阵的文件来打印列表

时间:2018-04-10 18:28:42

标签: python

我有一个score_matrix.txt文件,其中包含:

6,1,2,-10
1,5,0,-2
2,0,6,3
-10,-2,3,5

我正在尝试编写一个函数“read_scores”,它使用一个文件名(字符串)作为参数,并返回一个int列表列表(4x4矩阵)。

这就是我所拥有的:

def read_scores(file)
    file=open('score_matrix.txt')
    g=[]
    for aline in file:
        aline=float(aline)
        g[aline]=aline.split('/n')
    return g

3 个答案:

答案 0 :(得分:2)

您可以使用numpy.genfromtxt()并将其读入numpy.ndarray

import numpy as np
g = np.genfromtxt('test.txt', delimiter=",")

print(g)
#array([[  6.,   1.,   2., -10.],
#       [  1.,   5.,   0.,  -2.],
#       [  2.,   0.,   6.,   3.],
#       [-10.,  -2.,   3.,   5.]])

如果您更喜欢列表,可以拨打tolist()

print(g.tolist())
#[[6.0, 1.0, 2.0, -10.0],
# [1.0, 5.0, 0.0, -2.0],
# [2.0, 0.0, 6.0, 3.0],
# [-10.0, -2.0, 3.0, 5.0]]

答案 1 :(得分:1)

您可以map()使用split(',')

with open('test.txt') as f:
    data = f.read().splitlines()
    data = [list(map(int, i.split(','))) for i in data]
    print(data)

输出:

[[6, 1, 2, -10], [1, 5, 0, -2], [2, 0, 6, 3], [-10, -2, 3, 5]]

答案 2 :(得分:1)

您还可以使用pandas来阅读和处理csv文件:

import pandas as pd

pd.read_csv('file.csv', names=['col1','col2','col3','col4'])

输出:

   col1  col2  col3  col4
0     6     1     2   -10
1     1     5     0    -2
2     2     0     6     3
3   -10    -2     3     5

您还可以使用以下内容将结果DataFrame转换为矩阵

pd.read_csv('tmp.txt', names=['col1','col2','col3','col4']).as_matrix()

输出:

array([[  6,   1,   2, -10],
       [  1,   5,   0,  -2],
       [  2,   0,   6,   3],
       [-10,  -2,   3,   5]])