首页 > 解决方案 > 使用 Numpy 创建网格时如何更改整数类型?

问题描述

我收到以下错误

MemoryError: 无法为形状 (2999、2999、2999) 和数据类型 int64 的数组分配 201.GiB

使用以下代码使用 Numpy 创建网格时

dimension=3
tot_length=2000
list_no=range(1, tot_length)
arr = np.meshgrid ( *[list_no for _ in range ( dimension )] )

我可以知道在哪里将 int64 更改为 int32 或其他可能的设置,这些设置可以让我最大化tot_length高于该值的数量2000

我检查了文档,但没有说明将数据类型更改为 type32 的选项。

标签: pythonnumpy

解决方案


我可以知道在哪里将 int64 更改为 int32

NumPy 是在猜测int64,因为你给它一个range对象,它需要一个数组,而ranges 是int. 如果您不希望它猜测,请使用数组:

list_no = np.array(range(1, tot_length), dtype=np.int32)

或更简单地说

list_no = np.arange(1, tot_length, dtype=np.int32)

当然,您仍然需要 100 GiB 的内存,这仍然是相当大的。


推荐阅读