python - 使用 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 的选项。
解决方案
我可以知道在哪里将 int64 更改为 int32
NumPy 是在猜测int64
,因为你给它一个range
对象,它需要一个数组,而range
s 是int
. 如果您不希望它猜测,请使用数组:
list_no = np.array(range(1, tot_length), dtype=np.int32)
或更简单地说
list_no = np.arange(1, tot_length, dtype=np.int32)
当然,您仍然需要 100 GiB 的内存,这仍然是相当大的。
推荐阅读
- c - 使用 STM32F103C8 读/写 U 盘
- html - SVG 未正确加载
- email - Yii 2 调用字符串上的成员函数 saveAs()
- shell - Shell Script msg() echo "${RED}$@${NOCOLOR}", 什么意思
- asp.net-mvc - 表中的 ASP.NET MVC 数据插入
- javascript - 强大的文件路径未定义
- azure - Azure RM 模板中忽略“enableKafka”属性
- ruby-on-rails - Rails 6.1.3 中的自动加载行为更改
- ios - Swift 中“ChaChaPoly.SealedBox”的 Flutter / Dart 等价物
- google-sheets-formula - JOINT 数据的问题:数组文字缺少值