【发布时间】:2019-08-21 23:33:41
【问题描述】:
我有一个巨大的数据框:
df.shape = (106, 3364)
当我想运行以下代码时,我得到 MemoryError
i = df.values.T
j = np.nansum((i - i[:, None]) ** 2, axis=2) ** .5
MemoryError Traceback(最近调用 最后)在 ----> 1 j = np.nansum((i - i[:, None]) ** 2, axis=2) ** .5
内存错误:
有什么方法可以避免吗?
【问题讨论】:
-
我猜轴应该是 0(列)或 1(行)。 axis=2 没有意义,可能会制作数组的完整副本
-
准确使用
np.nansum有多重要?如果您可以将原始数组中的 nan 值替换为零,您可以使用scipy.spatial.distance.pdist。 -
(否则你可以使用 Numba 通过循环快速计算)
-
@jdehesa 不,在我的情况下,不可能用 0 填充 NaN。你能解释一下 numba 吗?
-
@Marat 即使使用轴 0 或 1 仍然出现内存错误
标签: python numpy out-of-memory