我有一个.dat文件,其中包含大约1000行,每行包含
letter int int int int boolean
我试着读它,所以每一行都是我阵列上的一个新行。
目前我有np.genfromtxt('myfile.dat')
给了我
nan 23. 34. 23. 55. 1.
这几乎是正确的,nan
应该是字母't',我知道如何用正确的字母阅读?而且我该如何摆脱。每个号码后?
欢呼声
答案 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