从文本中读取float和string

时间:2014-02-03 22:02:27

标签: python file numpy io

我有一个包含字符串和浮点数的txt(见下文),我需要在矩阵中加载数据。最好的方法是什么?

虚拟数据行:

1 2 3.0 4.567 8.910 Data/file.txt

以下是我的(非工作)代码。它不会返回前三个变量,也不会包装。

import numpy as np
import scipy

matrix = []
with open('input.txt') as f:
    for line in f:
    el = line.split()
    matrix.append(el[0] + el[1] + el[2] + el[3] + el[4] + el[5])
print matrix

3 个答案:

答案 0 :(得分:1)

每行的条目数是否相同?如果是这样,我建议使用pandas。使用read_csv功能并将分隔符指定为\s+

如果您希望它是表格式的,请将其存储在数据框中。

答案 1 :(得分:1)

这对我有用。 for循环的缩进是否是拼写错误?

import numpy as np
import scipy

matrix = []
with open('input.txt') as f:
    for line in f:
        el = line.split()
        matrix.append(el[0] + el[1] + el[2] + el[3] + el[4] + el[5])
print matrix

输出:['123.04.5678.910Data / file.txt']

答案 2 :(得分:0)

您可以numpy.genfromtxt使用dtype=None

>>> import numpy as np
>>> np.genfromtxt('input.txt', dtype=None)
array((1, 2, 3.0, 4.567, 8.91, 'Data/file.txt'), 
      dtype=[('f0', '<i4'), ('f1', '<i4'), ('f2', '<f8'), ('f3', '<f8'), ('f4', '<f8'), ('f5', 'S13')])