将文本文件转换为矩阵

Convert a text file to a matrix

我一直在尝试将这段时间的数据从文件转换成矩阵。

101 Bob 10
104 Lob 5
103 Dob 9
109 Dobby 4

我能做的最好的事情就是将它转换成这样的列表。

['101 Bob 10', '104 Lob 5', '103 Dob 9', '109 Dobby 4']

问题是如何将文件转置为矩阵?

Python 的原生类型中没有矩阵这样的东西,因此评论。

要将文件读入二维 NumPy 数组,尝试

import numpy as np
data = np.genfromtxt('filename', dtype=str)
print(data)
print(data.shape)
print(data[0, 1])

请注意,所有元素都是 strs,因此您之后必须将数字转换为适当的 ints(如果需要)。

也许您正在寻找这样的解决方案。

首先打开文件并读取所有行(“with”将处理关闭文件,选项 'r' 确保文件以只读方式打开)。

with open('myfile.txt', 'r') as f:
    lines = f.readlines()    

在此阶段,所有文件内容都在内存中,由列表中的 lines 变量保存,列表中的每一项都是文件中的一行。

然后取每一行并使用 spaces 作为分隔符将其拆分。 split 函数 returns 一个字符串列表,例如['101', 'Bob', '10'].拆分后的结果需要放在一个外链表中来模拟一个矩阵。有两种方法可以做到这一点:

output = []
for line in lines
    output.append(line.split(' ')

或者,您可以使用压缩形式替换上面的所有三行。

output = [item.split(' ') for item in input]

请注意,按照编码,整个文件必须适合内存,仅当 space 可用作分隔符时,行拆分才有效。

print(output)
print(output[0][1])

第二张图展示了如何模拟 矩阵。结果是:

[['101', 'Bob', '10'], ['104', 'Lob', '5'], ['103', 'Dob', '9'], ['109', 'Dobby', '4']]
Bob