【问题标题】:How should you read a 2D integer array?你应该如何读取二维整数数组?
【发布时间】:2014-02-12 19:21:57
【问题描述】:

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

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))

有没有更简单的方法来做到这一点?

【问题讨论】:

    标签: python list file


    【解决方案1】:

    有一个用于读取逗号分隔文件的内置模块(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 而不是列表列表。

    【讨论】:

      【解决方案2】:

      使用嵌套列表推导:

      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 中,您需要在 map 周围额外调用 list()

      如果NumPy 可用:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-23
        • 2021-11-01
        • 1970-01-01
        • 2013-06-06
        • 2015-09-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多