Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组可以轻松地放入可用的RAM中,但在调用numpy.take时仍会发生内存错误_Numpy - Fatal编程技术网

数组可以轻松地放入可用的RAM中,但在调用numpy.take时仍会发生内存错误

数组可以轻松地放入可用的RAM中,但在调用numpy.take时仍会发生内存错误,numpy,Numpy,我有三个形状数组(10291146,8,5)。它们是H4,rowoffset和coloffset。H4是float32,而另外两个是int。假设每个元素数组有4个字节,H4的开销为188.7 MB 我的机器总共有32 GB内存,目前有18个可用内存。我使用platform.architecture() 似乎我还没有达到内存限制,但在运行以下操作时,我出现了内存错误: shifted=np.take(H4,rowOffsets,0,mode='clip'). 我进一步测试了这一点,在Take调用

我有三个形状数组
(10291146,8,5)
。它们是
H4
rowoffset
coloffset
。H4是float32,而另外两个是int。假设每个元素数组有4个字节,
H4
的开销为188.7 MB

我的机器总共有32 GB内存,目前有18个可用内存。我使用
platform.architecture()

似乎我还没有达到内存限制,但在运行以下操作时,我出现了内存错误:

shifted=np.take(H4,rowOffsets,0,mode='clip').
我进一步测试了这一点,在Take调用之前运行代码,输入的
(30003000,8,5)
。这消耗了7倍多的内存,但在Take调用之前也没有导致内存错误


所以我认为我使用Take是错误的,它有一个bug,或者它在执行时消耗了大量内存。有人能帮我弄清楚这里发生了什么吗?

带多维参数的
take
索引中的每个条目获取除
维度以外的所有部分。因此,您使用它的方式,结果将是
1029*1146**2*8**2*5**2*itemsize
,这是一个很大的问题,可以解释您的内存问题

您可能想使用
沿轴移动

“这太多了。”您不是在开玩笑。谢谢您的解释。