numPy — выбрать столбец из структурированного dtype

#python-3.x #numpy

#python-3.x #numpy

Вопрос:

Я использую np.genfromtxt для чтения данных смешанного типа из внешнего файла:

 data = np.genfromtxt(filename, dtype='U10,U8,f,f,f,f,f,f')
  

Если бы тип моих данных был однородным, я мог бы получить доступ ко второму столбцу моих данных, выполнив column_two = data[:,2] . Однако, поскольку я использую структурированный dtype, я не могу просто сделать data[:,2] , поскольку это приводит к IndexError: too many indices for array . Есть ли какой-либо способ эффективно выбрать n-й столбец data для использования в дальнейшей обработке?

Ответ №1:

Итак, проблема в том, что структурированные типы данных не поддерживают индексацию столбцов. Способ, который я нашел, чтобы исправить это, и способ, который кажется наиболее органичным, заключается в использовании «Доступа к полю», а именно.

 data = np.genfromtxt(filename, dtype=[('date', str), ('time', str), ('az', np.float64), ...)
  

Таким образом, для доступа к столбцу «время» мы можем просто использовать data['time'] .