numpy Функция Loadtxt, кажется, потребляет слишком много памяти

Когда я загружаю массив с помощью numpy.loadtxt, кажется взять слишком много памяти. Например.

a = numpy.zeros(int(1e6))

вызывает увеличение памяти примерно на 8 МБ (при использовании htop или всего 8 байт * 1 миллион \ приблизительно 8 МБ). С другой стороны, если я сохраню, а затем загружу этот массив

numpy.savetxt('a.csv', a)
b = numpy.loadtxt('a.csv')

, мое использование памяти увеличится примерно на 100 МБ! Я снова наблюдал это с помощью htop. Это наблюдалось в оболочке iPython, а также при пошаговом выполнении кода с использованием Pdb ++.

Есть идеи, что здесь происходит?

Прочитав ответ Джозза, я понял, что, если я заранее знаю размер массива, есть гораздо более эффективный с точки зрения памяти способ сделать что-то, если сказать, что 'a' было mxn массив:

b = numpy.zeros((m,n))
with open('a.csv', 'r') as f:
    reader = csv.reader(f)
    for i, row in enumerate(reader):
        b[i,:] = numpy.array(row)
5
задан mob 26 May 2015 в 14:50
поделиться