如果我有一个包含内容的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)
这将数据存储为一个数组,其中每一行都是一个字符串。有没有一种方法可以立即将这些数据以矩阵形式存储为我在读取时的整数?
答案 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]]
答案 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]]