我正在尝试用矩阵读取文本文件并将其放在列表中
但我在这里使用两个循环,我希望我的功能更快,
那么有比我的代码更好的方法吗?
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
答案 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)