Чтение файла CSV в массив numpy, первая строка в виде строк, остальное как float

У меня есть данные, хранящиеся в CSV, где первая строка – это строки (имена столбцов), а остальные строки – это числа. Как сохранить это в массиве numpy? Все, что я могу найти, – это установить тип данных для столбцов, но не для строк.

Сейчас я просто пропускаю заголовки, чтобы делать вычисления, но мне нужно иметь заголовки в финальной версии. Но если я оставляю заголовки, он устанавливает весь массив как строку и вычисления терпят неудачу.

Это то, что у меня есть:

data = np.genfromtxt(path_to_csv, dtype=None, delimiter=',', skip_header=1) 

3 Solutions collect form web for “Чтение файла CSV в массив numpy, первая строка в виде строк, остальное как float”

Вы можете сохранить имена столбцов, если вы используете names=True аргумент в np.genfromxt

  data = np.genfromtxt(path_to_csv, dtype=float, delimiter=',', names=True) 

Обратите внимание на dtype=float , который преобразует ваши данные в float. Это более эффективно, чем использование dtype=None , которое просит np.genfromtxt угадать тип данных для вас.

Результатом будет структурированный массив, в котором вы можете получить доступ к отдельным столбцам по их имени. Имена будут взяты из вашей первой строки. Могут произойти некоторые изменения, пробелы в имени столбца будут изменены, например, на _ . Документация должна охватывать большинство вопросов, которые могут возникнуть.

Я не уверен, что вы имеете в виду, когда говорите, что вам нужны заголовки в окончательной версии, но вы можете создать структурированный массив, в котором доступ к столбцам осуществляется такими строками:

 data = np.genfromtxt(path_to_csv, dtype=None, delimiter=',', names=True) 

а затем доступ к столбцам с data['col1_name'] , data['col2_name'] и т. д.

Вся идея массива numpy состоит в том, что все элементы одного типа. Прочитайте заголовки в списке Python и управляйте ими отдельно от чисел. Вы также можете создать структурированный массив (массив записей), и в этом случае вы можете использовать заголовки для обозначения полей в записях. Сохранение их в массиве было бы лишним в этом случае.

  • Как добавить к массивам, чтобы совпадающие элементы стали их собственными массивами
  • Есть ли какой-то элегантный способ манипулировать моим ndarray
  • индексирование numpy: не следует ли возвращать эллипсис избыточным?
  • Ошибка в номере: недопустимое значение
  • Создание массива NumPy непосредственно из __array_interface__
  • Как заставить scipy.interpolate дать экстраполированный результат за пределами диапазона ввода?
  • Двойная матричная бинаризация с использованием только одного выражения
  • Python: число индексов пересечения
  • Самый быстрый способ инициализации массива numpy со значениями, заданными функцией
  • Преобразование между datetime, Timestamp и datetime64
  • Любые идеи, почему масштабирование векторов R и Python NumPy не соответствует?
  • Python - лучший язык программирования в мире.