Возможно, на это был дан ответ раньше, но мне сложно найти вопрос. Предположим, у меня есть следующие данные в файле:Как разбить смешанный массив dtype 1D numpy?
date, id, int1, int2, int3
02/03/2015, 2, 23, 65, 99
10/06/2016, 4, 84, 12, 35
10/01/2017, 6, 53, 6, 78
я могу быстро написать Numpy фрагмент кода в виде:
import StringIO
import numpy as np
hdr = 'date, id, int1, int2, int3'
date = '''
02/03/2015, 2, 23, 65, 99
10/06/2016, 4, 84, 12, 35
10/01/2017, 6, 53, 6, 78
'''
lines = '%s%s' % (hdr, date)
pseudo_file = StringIO.StringIO(lines)
np_dtypes = 'S10,%s' % ','.join(['i4' for x in hdr.split(',')[1:]])
np1 = np.genfromtxt(pseudo_file, delimiter=',', names=True, dtype=np_dtypes)
print np1
print np1.dtype.names
print np1.shape
print np1['date']
print np1['int3']
Это даст мне следующий вывод:
[('02/03/2015', 2, 23, 65, 99) ('10/06/2016', 4, 84, 12, 35)
('10/01/2017', 6, 53, 6, 78)]
('date', 'id', 'int1', 'int2', 'int3')
(3L,)
['02/03/2015' '10/06/2016' '10/01/2017']
[99 35 78]
Можно видеть, что numpy смог успешно проанализировать массив. Однако как разделить это на две части:
- 1D массив с только строками (столбец дат);
- Другие 1D массивы с целыми числами.
Разделение должно выполняться таким образом, чтобы сохранить структуру имен для каждой колонки.
'даты = NP1 [[» date ']] 'должен работать для столбца (ов) даты, как и в списке' int '. – hpaulj
Спасибо @tom. Мне не хватало основного использования (и до сих пор). Мне понадобилось бы время подумать над этим решением. В основном потому, что я искал методы numpy. лол. ;-) Приветствия. –
@hpaulj, который не сохраняет имя столбца, в котором задан вопрос – tom