【发布时间】:2021-10-25 17:52:31
【问题描述】:
我正在尝试计算大型 numpy 数组的平均值。最初,我尝试过:
data = (np.ones((10**6, 133))
for _ in range(100))
np.stack(data).mean(axis=0)
但我得到了
numpy.core._exceptions.MemoryError: 无法为形状为 (100, 1000000, 133) 且数据类型为 float32 的数组分配 xxx GiB
在原始代码中,数据是更有意义的向量的生成器。
我考虑过使用 dask 进行这样的操作,希望它将我的数据拆分成由磁盘支持的块。
import dask.array as da
import numpy as np
data = (np.ones((10**6, 133)) for _ in range(100))
x = da.stack(da.from_array(arr, chunks="auto") for arr in data)
x = da.mean(x, axis=0)
y = x.compute()
但是,当我运行它时,进程以“Killed”终止。
如何在单台机器上解决这个问题?
【问题讨论】:
-
平均值为
1。抛开玩笑,也许this question 会引起你的兴趣。 -
@Ivan 我缺少 :haha 图标。谢谢。
-
@dzieciou 您在堆叠阵列时遇到此错误?
-
@MSS 是的,在堆叠时。