我有一个带有时间戳作为列的文件,其余部分都有数字。我可以正确加载一个或另一个,但不能同时加载。让我感到沮丧......
这就是我在做的事情:
import numpy as np
file = np.genfromtxt('myfile.dat', skip_header = 1, usecols = (0,1,2,3), dtype = (str, float), delimiter = '\t')
因此第0列是时间戳,我想以字符串形式读取它。其余的我想读作浮标。有谁知道如何做到这一点?我试着用名字和dtypes愚弄,但我无法得到任何工作。
感谢。
答案 0 :(得分:3)
也许试试这个:
import numpy as np
data = np.genfromtxt('myfile.dat',
skiprows=1,
usecols = (0,1,2,3),
dtype = '|S10,<f8,<f8,<f8',
delimiter = '\t')
print(data)
# [('2010-1-1', 1.2, 2.2999999999999998, 3.3999999999999999)
# ('2010-2-1', 4.5, 5.5999999999999996, 6.7000000000000002)]
print(data.dtype)
# [('f0', '|S10'), ('f1', '<f8'), ('f2', '<f8'), ('f3', '<f8')]
print(data.shape)
# (2,)
答案 1 :(得分:2)
如果我有一个制表符分隔的文件,如下所示:
# Header Stuff
12:53:16 1.1111 2.2222 3.3333 4.4444
12:53:17 5.5555 6.6666 7.7777 8.8888
12:53:18 9.9999 10.0000 11.1111 12.1212
我认为你可以通过将dtype指定为None来获得你想要的东西(所以numpy为你选择dtypes):
file = np.genfromtxt('myfile.dat', skip_header = 1, usecols = (0,1,2,3,4),\
dtype = None, delimiter = '\t')
或者您可以明确设置dtypes:
file = np.genfromtxt('myfile.dat', skip_header = 1, usecols = (0,1,2,3,4), \
dtype=[('mytime','S8'),('myfloat1','f8'),('myfloat2','f8'),('myfloat3','f8')], \
delimiter = '\t')