Как заполнить большой массив в numpy?

#python #arrays #python-3.x #numpy #kill-process

Вопрос:

Я пытаюсь заполнить массив размером 2 ^ 32, и на определенном этапе заполнения он выдает, что процесс был остановлен

 def MakeArr(n):  start_time = time.time()   arr = np.random.randint(1, 2**n, size=2**n, dtype=np.int64)   print(arr)  print("Time to create: %s sec" % (time.time() - start_time))  print("arr len:"   str(len(arr)))  return arr sys.setrecursionlimit(1500); n = 32; arr = MakeArr(n)  

введите описание изображения здесь

Комментарии:

1. У вас есть 16 ГБ памяти, необходимые для выделения этого массива?

2. откройте диспетчер задач и следите за использованием оперативной памяти

Ответ №1:

Массив 2^32 может быть слишком большим для обработки python или numpy. Возможно, вы сможете получить больший массив, изменив тип dtype на более низкий, например np.int8 .

Комментарии:

1. Это работает, но есть ли способ увеличить диапазон случайных чисел?

2. Существует компромисс между тем, насколько велик ваш массив, и тем, насколько большими могут быть ваши числа. Вы ограничены объемом имеющейся у вас памяти

3. Теперь я понимаю, спасибо

4. Вы могли бы, вероятно, получить еще какое-то значение, используя NumPy uint. Они не допускают отрицательных чисел, но, таким образом, диапазон в два раза лучше

5. Понял, я постараюсь