如何从文本文件中读取矩阵

时间:2016-03-13 16:18:34

标签: python numpy

我正在尝试用矩阵读取文本文件并将其放在列表中

但我在这里使用两个循环,我希望我的功能更快,

那么有比我的代码更好的方法吗?

def read_file(path_to_file):
    mylist=[]
    for eachLine in open(path_to_file,'rt'):
        mylist.append([int(eachRow) for eachRow in eachLine.split()])
    return mylist

使用numpy更新代码

def read_file(path_to_file):
file = path_to_file
list = np.loadtxt(file, skiprows=0)
print(list)

我收到了错误ValueError: Wrong number of columns at line 2

示例txtfile(第一行指示总是对称的行数或列数)

3
1 2 3
4 5 6
7 8 9

1 个答案:

答案 0 :(得分:1)

我不认为你可以更快地阅读文件。是的,你有一个嵌套的for循环,因而是二次复杂度,但这是用于读取二次矩阵的,所以这看起来很好。但是,您可以使用with来确保文件正确关闭,并记住跳过第一行:

def read1():
    with open("data.txt") as f:
        next(f)
        return [[int(x) for x in row.split()] for row in f]

可以<{1}}使用numpy.loadtxt ...

skiprows=1

...但实际上这似乎是嵌套列表理解的五倍 ,至少对于这个微小的3x3矩阵而言。

import numpy as np
def read2():
    return np.loadtxt("data.txt", skiprows=1)