你应该如何读取2D整数数组?

时间:2014-02-12 19:21:57

标签: python list file

我是python的新手。我想从文本文件中读取一个2D整数数组,文件中每行一行,数字用逗号分隔。这有效:

s = f.read()
ss = s.splitlines()
mx = []
for i in range(0,len(ss)):
    mx.append([])
    for s1 in ss[i].split(','):
        mx[i].append(int(s1))

有更简单的方法吗?

2 个答案:

答案 0 :(得分:4)

有一个用于读取逗号分隔文件的内置模块(csv):

import csv
mx = [map(int, row) for row in csv.reader(open(filename))]

另外,如果您打算使用此数组进行数学运算,您可能会发现安装和使用numpy很有用:

import numpy
mx = numpy.loadtxt(filename, delimiter=',', dtype=int)

mx现在将是array而不是列表列表。

答案 1 :(得分:3)

使用嵌套列表推导:

with open(filename) as f:
    mx = [[int(x) for x in line.split(',')] for line in f]

或使用map列出理解:

mx = [map(int, line.split(',')) for line in f]

请注意,在Python 3中,您需要围绕list()进行额外的map调用。

如果NumPy可用:

>>> import numpy as np
>>> mx = np.loadtxt(filename, delimiter=',', dtype=int).tolist()