【发布时间】:2014-01-20 12:12:22
【问题描述】:
我正在尝试从文件中读取一些数字并使用 Python 将它们存储到矩阵中。在文件中,在第一行,我有 2 个数字,n 和 m,行数和列数,在下一行,我有 n*m 值。复杂的部分是,在文件的第二行,例如,我没有 m 值,我只有 m-2 值。所以我不能一次读取一行文件,而只是将值存储在矩阵中。编辑文件不是选项,因为我有 200 行和 1000 列的文件。 这是行数和列数较少的文件的外观:
4 5
1 2 3
4 5 1 2 3 4
5 1 2
3 4 5 1 2
3 4 5
我已经设法解决了这个问题,方法是将所有值存储在一个数组中,然后删除前两个值,即 n 和 m,然后从该数组创建一个矩阵。
这是我的代码:
f = open('somefile2.txt')
numbers = []
for eachLine in f:
line = eachLine.strip()
for x in eachLine.split(' '):
line2 = int(x)
numbers.append(line2)
f.close()
print numbers
n = numbers[0]
del numbers[0]
m = numbers[0]
del numbers[0]
print n, m, numbers
vector = []
matrix = []
for i in range(n):
for j in range(m):
vector.append(numbers[j])
matrix.append(vector)
vector = []
print matrix
这给了我预期的结果,但这是正确的方法吗,通过使用额外的数组numbers,还是有一种更简单的方法可以将所有值直接存储到矩阵中?
【问题讨论】: