读取非分隔整数

时间:2014-07-22 21:58:40

标签: python numpy pandas

我有一个格式为

的文件
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)

提前致谢。

1 个答案:

答案 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