gpt4 book ai didi

python - numpy 的内存错误在哪里

转载 作者:太空宇宙 更新时间:2023-11-03 16:45:52 24 4
gpt4 key购买 nike

我在使用 numpy.where 时遇到 MemoryError,但我不确定原因。我无法在这里发布实际的代码,但下面是一个复制该问题的小工作示例。

import numpy as np
dat = np.random.randn(100000, 1, 1, 1, 45, 2, 3)
# The following two steps seem superfluous but I wanted to replicate
# behaviour in the original code
cond = dat[:,0,0,0,0,0,0] > 0
cond = cond[:,None,None,None,None,None,None]

dat2 = np.where(cond, dat, 0)
dat[...,2] = np.where(cond, dat[...,2], dat2[...,2]) # Causes MemoryError

我知道向计算机添加更多内存可以解决该问题,但我想了解这里发生了什么。

我预计上面的数组切片不会复制数组,而只会返回一个 View ,但我认为它实际上是出于某种原因复制数组。

最佳答案

这里没有发生“魔法”,您使用 np.random.randn(100000, 1, 1, 1, 45, 2, 3) 创建的数据数组非常大.

Numpy 似乎将每个数字存储为 64 位(8 字节) float ,因此您的数组占用大约 206 MB 的内存(100000 * 1 * 1 * 1 * 45 * 2 * 3 * 8)。

/usr/bin/time -v python test.py说该程序在峰值时使用了大约 580 MB,这可能是由于复制对象造成的。

关于python - numpy 的内存错误在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36309576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com