首页 > 解决方案 > 如何生成一个非常大的一维数组

问题描述

例如我想生成一个大小为 1 万亿的一维数组

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

每当我运行这段代码时,我都会得到

Memory error

有没有其他方法可以做到这一点?

标签: pythonpython-3.xnumpy

解决方案


好吧,您似乎遇到了您的计算机根本无法处理的问题。根本没有足够的 RAM 内存。如果您改为将数据类型更改为 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

一个解决方案是在问题开始之前将数组拆分为子数组,但您仍然无法在单个数组中呈现结果,因为它需要具有原始的万亿大小。


推荐阅读