我有一个格式为
的文件11100000011111111
11100000011111111
11100000011111111
每个元素都是1位数。有一个很好的方法来创建矩阵使用它作为输入?目前我正在将每一行作为字符串读取,将其转换为列表,然后将其存储在一个numpy数组中。
array = []
i_file = open(array_file, 'rb')
for line in i_file:
data = list(line.strip().replace('?', '3'))
array.append(data)
i_file.close()
array = np.array(array, dtype=np.int8)
提前致谢。
答案 0 :(得分:3)
read_fwf
可用于读取固定宽度的文件。下面有一个如何在这种情况下使用它的示例 - colspecs
是列规范的列表,作为[打开,关闭]列位置的元组。
In [55]: data = StringIO("""11100000011111111
...: 11100000011111111
...: 11100000011111111""")
In [58]: colspecs = [(n, n+1) for n in range(17)]
In [58]: df = pd.read_fwf(data, colspecs=colspecs, names=range(17))
In [58]: df
Out[58]:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1
1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1
2 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1