Dask 数组
内容
实时笔记本
你可以在 live session 中运行此笔记本,或查看 Github 上的内容。
Dask 数组¶
Dask 数组协调许多 Numpy 数组,这些数组在网格中被安排成块。它们支持 Numpy API 的一个大子集。
启动 Dask 客户端以使用仪表板¶
启动 Dask 客户端是可选的。它将提供一个仪表板,这对于深入了解计算非常有用。
当你在下方创建客户端后,仪表板的链接将会变得可见。我们建议在使用笔记本的另一侧屏幕上打开它。虽然安排窗口可能需要一些努力,但在学习时同时看到两者是非常有用的。
[ ]:
from dask.distributed import Client, progress
client = Client(processes=False, threads_per_worker=4,
n_workers=1, memory_limit='2GB')
client
创建随机数组¶
这将创建一个由随机数组成的 10000x10000 数组,表示为多个大小为 1000x1000 的 numpy 数组(如果数组不能均匀分割,则更小)。在这种情况下,有 100 个(10x10)大小为 1000x1000 的 numpy 数组。
[ ]:
import dask.array as da
x = da.random.random((10000, 10000), chunks=(1000, 1000))
x
像往常一样使用 NumPy 语法
[ ]:
y = x + x.T
z = y[::2, 5000:].mean(axis=1)
z
当你希望结果作为NumPy数组时,调用 .compute()
。
如果你在上面启动了 Client()
,那么在计算过程中你可能想要查看状态页面。
[ ]:
z.compute()
在内存中持久化数据¶
如果你的数据集有足够的可用RAM,那么你可以将数据持久化在内存中。
这使得未来的计算速度大大提高。
[ ]:
y = y.persist()
[ ]:
%time y[0, 0].compute()
[ ]:
%time y.sum().compute()
进一步阅读¶
关于使用 Dask 数组的更深入指南可以在 dask 教程 的第 03 个笔记本中找到。