我有一个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
答案 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]])