Как работать с большими файлами данных в Wolfram Mathematica

Интересно, существует ли способ работы с большими файлами в Mathematica? В настоящее время у меня есть файл размером около 500 МБ с данными таблицы.

Import["data.txt","Table"];

Что такое альтернативный путь?


person Igor Konoplyanko    schedule 03.03.2010    source источник
comment
загрузка большого файла занимает слишком много времени. и я думаю слишком много памяти тоже.   -  person Igor Konoplyanko    schedule 03.03.2010
comment
Подобный вопрос был задан снова здесь: /вопросы/7525782/ . Я дал два решения для плотных и разреженных таблиц, которые могут оказаться полезными для тех, кто зайдет на эту страницу. Они по-прежнему довольно медленные, но гораздо более эффективны с точки зрения памяти, чем Import.   -  person Leonid Shifrin    schedule 25.09.2011


Ответы (3)


Используйте OpenRead["file"], который дает вам InputStream объект, на котором вы можете использовать Read[stream]. В зависимости от формата файла данных вам может потребоваться установить значения пользовательских параметров в Read[] для RecordSeparators.

Пример:

In[1]:= str = OpenRead["ExampleData/USConstitution.txt"]    
Out[1]= InputStream["ExampleData/USConstitution.txt", 24]   

In[2]:= Read[str, Word]    
Out[2]= "We"    
In[3]:= Read[str, Word]
Out[3]= "the"    
In[4]:= Read[str, Record]
Out[4]= "People of the United States, in Order to form a more perfect Union,"
person Timo    schedule 03.03.2010
comment
Вам нужно не забыть закрыть поток, когда вы закончите. Кроме того, если вы прервете операцию, поток останется открытым. Это может привести к неприятным сюрпризам. Итак, я бы рекомендовал обернуть ваш код чтения в CheckAbort, чтобы поймать прерывание, а затем закрыть поток независимо от того, была ли операция прервана или нет. - person rcollyer; 05.03.2010

Вы также можете загрузить свои данные в базу данных (например, MySQL) и получить к ним доступ из Mathematica, используя DatabaseLink

person gdelfino    schedule 21.03.2010

Функция DumpSave также может быть полезна для сохранения больших наборов данных. Он сохраняет данные во внутреннем формате Mathematica, поэтому он более эффективен как по времени, так и по размеру файла.

person Robert    schedule 04.07.2012