【发布时间】:2014-07-04 22:34:08
【问题描述】:
之前有人问过这个问题,但该解决方案仅适用于 1D/2D 数组,我需要一个更一般的答案。
如何在不复制数据的情况下创建重复数组?这让我觉得这是一种通用的东西,因为它有助于在不影响内存的情况下对 python 操作进行矢量化。
更具体地说,我有一个 (y,x) 数组,我想多次平铺该数组以创建一个 (z,y,x) 数组。我可以用 numpy.tile(array, (nz,1,1)) 做到这一点,但我的内存不足。我的具体情况是 x=1500, y=2000, z=700。
【问题讨论】:
-
你打算用更大的数组做什么?
array[None,:,:]可能与平铺数组一样有用。除非您在 y 或 x 维度上执行某种dot产品,否则您仍然可能会出现内存错误。 -
我必须以 (time, y, x) 的形式将地理掩码应用于地球物理数据集。我正在使用的模块要求掩码与数据集的形状相同,这就是为什么我需要将 (y,x) 掩码复制到时间维度上。
标签: python numpy memory large-data