Загрузка большого файла csv в python в список или массив numpy

Мне не удалось загрузить большой CSV-файл (около 1,2 ГБ из здесь) в пустой массив или список, но не смог загрузить его в python. Есть ли выход?


person Harshit Agarwal    schedule 09.12.2016    source источник
comment
На странице, на которую вы ссылаетесь, в Numpy есть что-то, что вы можете использовать для загрузки файлов мата, здесь. Пробовали ли вы это, это может сработать.   -  person Preston Hager    schedule 09.12.2016
comment
Каково содержимое этого файла и что вы собираетесь с ним делать?   -  person hpaulj    schedule 09.12.2016
comment
@hpaulj это CSV-файл с формой 81011 * 4096 и всеми числами с плавающей запятой.   -  person Harshit Agarwal    schedule 09.12.2016
comment
@PrestonHager Я хотел загрузить CSV-файл, а не файл Matlab.   -  person Harshit Agarwal    schedule 09.12.2016
comment
Да, но я посмотрел на страницу, которую вы дали, и она в формате Matlab.   -  person Preston Hager    schedule 09.12.2016
comment
В этой ссылке есть как файлы .mat (заархивированные?), так и файлы csv. Для начала я бы предложил загрузить часть csv с genfromtxt, указав скромное количество строк. Убедитесь, что вы можете загрузить и понять данные, прежде чем решать проблему загрузки всего этого.   -  person hpaulj    schedule 09.12.2016
comment
@hpaulj да, я пытался использовать genfromtxt для загрузки полного файла, есть ли способ загрузить часть CSV-файла также с помощью genfromtxt?   -  person Harshit Agarwal    schedule 10.12.2016
comment
Начиная с версии 1.10 genfromtxt принимает параметр max_rows.   -  person hpaulj    schedule 10.12.2016
comment
np.ones((81011,4096),float) вписывается в вашу память? Это «сюжет»?   -  person hpaulj    schedule 10.12.2016
comment
@hpaulj использует max_rows, если я укажу для чтения первые 500 строк, то как будут читаться следующие 500 строк?   -  person Harshit Agarwal    schedule 11.12.2016
comment
@hpaulj нет np.ones((81011,4096),float) это не помещается в памяти моего компьютера.   -  person Harshit Agarwal    schedule 11.12.2016


Ответы (1)


Вот моя логика для вашего случая. Он будет читать только одну строку за раз, и когда читается следующая строка, предыдущая будет удалена сборщиком мусора, если вы не сохранили ее как ссылку где-то еще. Даже вы можете использовать диспетчер контекста в последних версиях Python.

with open("Large_size_filename") as infile:
    for line in infile:
    do_something_with(line)

Надеюсь, это поможет вам в понимании

person Ranadip Dutta    schedule 09.12.2016
comment
Я действительно хочу загрузить весь файл в массив numpy или список python, потому что я хотел построить график для всех данных. Есть ли выход? - person Harshit Agarwal; 09.12.2016