Простое решение
Похоже, вы используете 32-битную версию Python (я также предполагаю, что вы работаете в Windows). Из numpy.memmap
документов:
Размер файлов, отображаемых в память, не может превышать 2 ГБ в 32-разрядных системах.
Итак, простое решение вашей проблемы - просто обновить установку Python до 64-битной.
Если ваш процессор был изготовлен где-то в это последнее десятилетие, то должна быть возможность обновления до 64-битного Python.
Альтернативы
Пока ваш Python 32-битный, работа с массивами размером более 2 ГБ никогда не будет легкой или прямой. Ваша единственная реальная возможность - разбить массив на части размером не более 2 ГБ в то время, когда вы изначально его создавали / записывали на диск. Затем вы будете работать с каждым произведением независимо.
Кроме того, вам все равно придется использовать numpy.memmap
с каждым элементом, так как в противном случае самому Python не хватит памяти.
Мощные альтернативы
Если вам приходится регулярно обрабатывать большие массивы такого типа, вам следует подумать о переключении своего кода / рабочего процесса на одну из структур больших данных. Теперь для Python есть целая куча из них. Раньше я широко использовал Pyspark , и он довольно прост в использовании (хотя требует кучу настроек). В комментариях Б. М. упоминает Dask , еще один такой большой фреймворк данных.
Хотя, если это только одноразовая задача, вероятно, не стоит беспокоиться о том, чтобы раскрутить одну из этих платформ.