Python не хватает памяти в большом CSV-файле (numpy)

У меня есть CSV-файл размером 3 ГБ, который я пытаюсь скопировать читать с помощью python, мне нужен средний столбец.

from numpy import * 
def data():
    return genfromtxt('All.csv',delimiter=',')

data = data() # This is where it fails already.

med = zeros(len(data[0]))
data = data.T
for i in xrange(len(data)):
    m = median(data[i])
    med[i] = 1.0/float(m)
print med

Я получаю следующую ошибку:

Python(1545) malloc: *** mmap(size=16777216) failed (error code=12)

*** error: can't allocate region

*** set a breakpoint in malloc_error_break to debug

Traceback (most recent call last):

  File "Normalize.py", line 40, in <module>

  data = data()

  File "Normalize.py", line 39, in data

  return genfromtxt('All.csv',delimiter=',')

File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-
packages/numpy/lib/npyio.py", line 1495, in genfromtxt

for (i, line) in enumerate(itertools.chain([first_line, ], fhd)):

MemoryError

Я думаю, что это просто ошибка нехватки памяти. Я использую 64-битный MacOSX с 4 ГБ оперативной памяти, а также numpy и Python, скомпилированные в 64-битном режиме.

Как мне это исправить? Стоит ли мне попробовать распределенный подход только для управления памятью?

Спасибо

РЕДАКТИРОВАТЬ: Тоже пробовал, но не повезло ...

genfromtxt('All.csv',delimiter=',', dtype=float16)
33
задан SingleNegationElimination 21 January 2012 в 22:12
поделиться