загрузка данных с использованием Numpy.genfromtxt в нескольких форматах - PullRequest
1 голос
/ 20 июля 2010

У меня есть файл с отметкой времени в виде столбца и цифрами во всех остальных. Я могу либо загрузить один или другой правильно, но не оба. Разочаровываешь меня ...

Вот что я делаю:

import numpy as np

file = np.genfromtxt('myfile.dat', skip_header = 1, usecols = (0,1,2,3), dtype = (str, float), delimiter = '\t')

Итак, столбец 0 - это временная метка, и я хочу прочитать ее как строку. Остальное я хочу прочитать как поплавки. Кто-нибудь знает как это сделать? Я пытался дурачиться с именами и dtypes, но я не могу заставить что-либо работать.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 20 июля 2010

Возможно, попробуйте это:

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,)
2 голосов
/ 20 июля 2010

Если у меня есть файл с разделителями табуляции, который выглядит следующим образом:

# 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...