我正在深入学习3D图像分割。基本上,我需要1/填充一个numpy数组,2/处理数组,3/取消填充数组
dataArray = np.pad(dataArray, 25, mode='constant', constant_values=0) # pad
processedArray = my_process(dataArray) # process
processedArray = processedArray[25:-25, 25:-25, 25:-25, :] # unpad
问题是,processedArray非常大(464928928928,10),在执行取消添加时内存不足。我想,新的内存分配?我说得对吗?我如何才能继续,以便不分配新内存?换句话说,索引指向未添加的元素,而不复制元素
可能有帮助的信息:上述行在函数中执行,并返回processedArray
可能是内存不足,因为一旦使用此数组调用函数,就会在函数内部创建一个副本,使内存加倍。所以,不要创建额外的数组
您可以保留阵列的全局副本。只需在全局数组上应用这些操作,而无需创建额外副本
在我的_进程内()
但是,如果my_进程调用更多的库函数来复制processedArray,那么内存仍然会耗尽。尝试在全局数组上应用所有操作,而不进行任何复制
内存问题的一个可能解决方案是使用short而不是float作为numpy数据类型。你可以试试这个
或者,您可以删除
dataArray
,为processedArray
创建空间相关问题 更多 >
编程相关推荐