从python中的.dat文件导入数组

时间:2015-11-29 11:17:47

标签: python arrays numpy

我有一个.dat文件,其中包含大约1000行,每行包含

letter int int int int boolean 我试着读它,所以每一行都是我阵列上的一个新行。 目前我有np.genfromtxt('myfile.dat')给了我

nan 23. 34. 23. 55. 1.

这几乎是正确的,nan应该是字母't',我知道如何用正确的字母阅读?而且我该如何摆脱。每个号码后? 欢呼声

1 个答案:

答案 0 :(得分:2)

一种方法是定义新的dtype。例如:

import numpy as np

desc = np.dtype([('letter', 'S1'), ('v1', float), ('v2', float),
                 ('v3', float), ('v4', float)])

并在genfromtext中使用:

data = np.genfromtxt(fobj, dtype=desc)

此文件内容:

x 23. 34. 23. 55. 1.
y 23. 34. 23. 55. 1.

会给你data

array([(b'x', 23.0, 34.0, 23.0, 55.0), (b'y', 23.0, 34.0, 23.0, 55.0)], 
      dtype=[('letter', 'S1'), ('v1', '<f8'), ('v2', '<f8'), ('v3', '<f8'), ('v4', '<f8')])

这是record array。您可以访问一行:

>>> data[0]
(b'x', 23.0, 34.0, 23.0, 55.0)

或一栏:

>>> data['letter']
    array([b'x', b'y'], 
          dtype='|S1')

或一个条目:

>>> data[0][1]
23.0
>>> data['v1'][1]
23.0