Pythonic Way для заполнения Numpy Array

Я обнаруживаю, что анализируя много файлов данных (обычно в файле .csv или аналогично), используя считыватель CSV и A для цикла, чтобы итерации по каждую строку. Данные, как правило, это таблица поплавок, так, например.

reader = csv.reader(open('somefile.csv'))
header = reader.next()

res_list = [list() for i in header]    

for line in reader:
  for i in range(len(line)):
    res_list[i].append(float(line[i]))

result_dict = dict(zip(header,res_list)) #so we can refer by column title

Это нормальный способ заполнения, поэтому я получаю каждый столбец как отдельный список, однако, я бы предпочел, что контейнер данных по умолчанию для списков элементов (и вложенных списков) будет примесены массивы, начиная с 99 раз Перекачивается в различные обработки сценариев / функций и иметь мощность Numpy Lifs, облегчает мою жизнь.

NUMPY Append (Arr, item) не включает в себя на месте и поэтому потребует повторного создания массивов для каждой точки в таблице (которая медленно и ненационально). Я также мог бы повторить перечень данных-столбцов и обернуть их в массив после того, как я закончу (что я делаю), но иногда это не так четко разрезано , когда Я закончил анализ файла и, возможно, понадобится добавить вещи в список позже в строке в любом случае.

Мне было интересно, есть ли какой-то меньший тяжелый путь (использовать изменившенную фразу «Pythonic») для обработки таблиц данных аналогичным образом или заполнить массивы (где базовый контейнер - это список) динамически и без копирования массивов все время.

(В другом примечании: его рода раздражает, что в целом люди используют столбцы для организации данных, но CSV чтения в строках, если читатель включал аргумент read_column (да, я знаю, что это не будет супер Эффективно), я думаю, что многие люди избегают, чтобы контролировать код тарелки, как указано выше, чтобы разбирать файл данных CSV.)

5
задан crasic 9 September 2011 в 00:40
поделиться