Можно ли создать матрицу размером 1 миллион x 1 миллион, используя numpy?

Возможный дубликат:
Python Numpy Очень большие матрицы

Я попробовал numpy.zeros ((100k x 100k)), и он вернул «массив слишком большой». Ответ на комментарии: 1) Я мог бы создать матрицу 10k x 10k, но не 100kx100k и 1milx1mil. 2) Матрица не разрежена.

3 Solutions collect form web for “Можно ли создать матрицу размером 1 миллион x 1 миллион, используя numpy?”

Мы можем сделать простые математики, чтобы это выяснить. 1 миллион на 1 миллион матрицы содержит 1 000 000 000 000 элементов. Если каждый элемент занимает 4 байта, потребуется 4 000 000 000 000 байт памяти. То есть 3,64 терабайта.

Есть также шансы, что данная реализация Python использует больше, чем для одного числа. Например, только прыжок с поплавка на двойной означает, что вам понадобится 7.28 терабайт. (Есть также шансы, что Python хранит номер в куче, и все, что вы получаете, является указателем на него, что примерно удваивает площадь, даже не принимая во внимание метаданные, но это скользкие основания, я всегда ошибаюсь, когда говорю о Python внутренности, так что давайте не будем копать слишком много.)

Я полагаю, что numpy не имеет жесткого ограничения, но если ваша система не имеет такой свободной памяти, делать нечего.

У вашей матрицы много нулевых записей? Я подозреваю, что это так, мало кто делает плотные проблемы, большие.

Вы можете легко сделать это с помощью разреженной матрицы. У SciPy есть хороший набор, встроенный. http://docs.scipy.org/doc/scipy/reference/sparse.html Пространство, требуемое разреженной матрицей, растет с числом ненулевых элементов, а не с размерами.

У вашей системы, вероятно, не будет достаточно памяти для хранения матрицы в памяти, но в настоящее время у вас может быть достаточно терабайт свободного места на диске. В этом случае numpy.memmap позволит вам хранить массив на диске, но выглядит так, как если бы он находился в памяти.

Однако, вероятно, лучше всего переосмыслить проблему. Вам действительно нужна матрица такая большая? Любые вычисления, связанные с ним, вероятно, будут неизмеримо медленными, и их нужно делать поблочно.

  • Как получить сумму продуктов всех комбинаций в массиве в Python?
  • конвертировать python xgboost dMatrix в numpy ndarray или pandas DataFrame
  • объединение индексированного массива в Python
  • Производительность numpy.searchsorted плоха на структурированных массивах
  • Может ли Python выполнять векторизованные операции?
  • matplotlib: как комментировать точку на разброс автоматически помещенной стрелки?
  • Эффективно накапливается коллекция редких scipy-матриц
  • Как читать .npy-файлы в Matlab
  • Что вызывает замедление 2x в моей реализации Cython матричного векторного умножения?
  • Двукратная бесплатная ошибка Python для огромных наборов данных
  • Передача массива numpy в Cython
  • Python - лучший язык программирования в мире.