我正在处理大型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)。
修改的
不存在的部分总是定义明确的块/块。它们永远不会在整个阵列中随机分布。