Накладные расходы на загрузку больших массивов numpy

Мой вопрос прост; и я не мог найти ресурс, который отвечает на него. Несколько похожие ссылки с использованием asarray, о числах в целом и самый краткий один здесь.

Как я могу рассчитать накладные расходы на загрузку массива numpy в ОЗУ (если есть какие-либо накладные расходы)? Или как определить наименьший объем оперативной памяти, необходимый для хранения всех массивов в памяти (без трудоемких проб и ошибок)?

Короче говоря, у меня есть несколько массивов numpy формы (x, 1323000, 1), где x достигает 6000. Это приводит к использованию на диске 30 ГБ для самого большого файла.

Все файлы вместе требуют 50GB. Поэтому достаточно ли, если я использую немного больше, чем 50GB в качестве оперативной памяти (используя Kubernetes)? Я хочу использовать оперативную память максимально эффективно, поэтому просто использовать 100GB не вариант.


person emil    schedule 11.11.2020    source источник
comment
Загрузка данных с жесткого диска происходит намного медленнее, чем запись данных в оперативную память. Поэтому время, потраченное на помещение данных в оперативную память, не имеет значения.   -  person Crawl Cycle    schedule 11.11.2020
comment
массивы numpy обычно имеют заголовок и блок памяти данных. Заголовок имеет небольшой размер и постоянный размер, и, чтобы ответить на ваш вопрос, для простых numpy dtypes размер блока данных может быть напрямую рассчитан как (количество байтов на элемент) * (количество элементов). То есть, чтобы сказать, насколько большой массив (x, 1323000, 1) вам нужно знать, это тип (np.float, np.int, np.float32 и т. д.) и количество байтов, используемых для этого типа (например, используйте finfo или iinfo)?   -  person tom10    schedule 11.11.2020
comment
Использование памяти массива numpy легко оценить, x*1323000*8 - общее количество элементов, умноженное на размер каждого (обычно 8 байт). Накладные расходы крошечные. Однако использование массива (массивов) может создавать копии, постоянные или временные. Так что на практике вам, вероятно, потребуется в 2-3 раза больше памяти.   -  person hpaulj    schedule 11.11.2020