【发布时间】:2015-02-18 21:51:41
【问题描述】:
我想知道为什么 numpy.zeros 占用这么小的空间?
x = numpy.zeros(200000000)
这不会占用内存,
x = numpy.repeat(0,200000000)
占用大约 1.5GB。 numpy.zeros 会创建一个空指针数组吗? 如果是这样,有没有办法在 cython 中更改指针后将指针设置回数组中的空?如果我使用:
x = numpy.zeros(200000000)
x[0:200000000] = 0.0
内存使用率上升。有没有办法改变一个值,然后把它改回 numpy.zeros 最初在 python 或 cython 中的格式?
【问题讨论】:
-
您如何测量每个阵列使用的内存?如果
x = numpy.zeros(200000000)那么x.nbytes在我的机器上就是1600000000。对于x = numpy.repeat(0, 200000000),使用了一半内存(创建数组时使用int32数据类型而不是float64数据类型)。 -
我只是在观察活动监视器的变化
-
仅供参考:我想我只是在 windows 2012 服务器上遇到了同样的事情,使用 python 3.7.2 和一些最近的 numpy 版本。有趣的问题是:
x[0:10]=1的情况会发生什么。是分配整个数组还是只分配所需的切片?明天检查:-)
标签: python arrays numpy cython