在Numpy数组中节省内存空间

时间:2017-01-20 16:13:27

标签: python arrays numpy memory

我正在处理大型Numpy阵列,并且在集成阵列等时遇到了一些内存问题。处理这个问题的一个选择是以小增量进行操作,我是这样做的。已经在努力了。但是,由于我的数据的性质,我的数组的大块不存在。

例如,如果我有一个数组,如

x = np.full((100,100,100), np.nan)

在我填充之后,通常它的大块(例如x[90:,:,80:])根本不存在于我的数据集中,我通过将值保留为NaN来标记,因此当我绘制并执行其他操作时有了它的东西,它就会被忽略,就像它不存在一样。到目前为止一切都很好。

然而,我想知道是否有一种方法可以使用这个对我有利,如果不是将不存在的空格留作np.nan,这会消耗内存,我只是将它们标记为耗尽空间。像

这样的东西
x[90:,:,80:,:] = np.nothing

或类似的东西。我意识到像上面这样的东西是行不通的,因为空间必须在磁盘上标记为阵列占用,但我仍然认为某些方法应该存在。

我看过的东西是稀疏矩阵(但它们只适用于二维阵列),蒙面阵列(不帮助)和np.empty之类的东西(也没有#&}# 39; t help)。

修改

不存在的部分总是定义明确的块/块。它们永远不会在整个阵列中随机分布。

0 个答案:

没有答案