将.txt文件转换为python中的整数矩阵

时间:2018-02-16 19:48:49

标签: python python-2.7 matrix file-io

如果我有一个包含内容的txt文件:

4 2 45 21
0 92 12 2
345 9 3 4
1 2 39 93

是否有一种快速简便的方法将其转换为int矩阵?

现在,我以这种方式访问​​了文件:

file = open(testFile, 'r')
data = []
for row in file:
    data.append(row)

这将数据存储为一个数组,其中每一行都是一个字符串。有没有一种方法可以立即将这些数据以矩阵形式存储为我在读取时的整数?

3 个答案:

答案 0 :(得分:1)

如果您将数据存储为numpy.ndarray,则可以使用numpy的genfromtext()并将dtype标记设置为int

from StringIO import StringIO
import numpy as np

text = """4 2 45 21
0 92 12 2
345 9 3 4
1 2 39 93"""

a = np.genfromtxt(StringIO(text), dtype=int)  #replace the arg with your filename

print(a)
#[[  4   2  45  21]
# [  0  92  12   2]
# [345   9   3   4]
# [  1   2  39  93]]

另一种方法是使用loadtxt()中指出@Zhiya代替comments代替this post

genfromtxt()

根据sns.PairGrid,两个函数基本相同,只是a = np.loadtxt(StringIO(text), dtype=int) 提供了更多处理缺失数据的选项。

答案 1 :(得分:1)

这样做的简单方法是:

>>> for row in file:
...     data.append([int(x) for x in row.split()])
...
>>> data
[[4, 2, 45, 21], [0, 92, 12, 2], [345, 9, 3, 4], [1, 2, 39, 93]]
IMO,这是最pythonic的方式

答案 2 :(得分:1)

表示嵌套列表:

text = """4 2 45 21
0 92 12 2
345 9 3 4
1 2 39 93"""

[[*map(int, line.split())] for line in text.split('\n')]

Out[16]: [[4, 2, 45, 21], [0, 92, 12, 2], [345, 9, 3, 4], [1, 2, 39, 93]]