Как создать 1d-массив очень большого размера - PullRequest
0 голосов
/ 03 августа 2020

Например, я хочу сгенерировать 1d-массив размером 1 триллион

A = np.arange(1000000000000,dtype='float')

всякий раз, когда я запускаю этот код, я получаю

Memory error

есть ли другой способ сделать это ?

1 Ответ

0 голосов
/ 03 августа 2020

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

>>> import numpy as np
>>> A = np.arange(1000000000000,dtype='float')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
MemoryError: Unable to allocate 7.28 TiB for an array with shape (1000000000000,) and data type float64
>>> A = np.arange(1000000000000,dtype='int')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
MemoryError: Unable to allocate 3.64 TiB for an array with shape (1000000000000,) and data type int32

Решением было бы разбить массив на подмассивы до того, как проблема даже начнется, но вы по-прежнему не сможет представить результат в виде единого массива, поскольку он должен иметь исходный размер в триллион.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...