实时笔记本

你可以在 live session Binder 中运行此笔记本,或查看 Github 上的内容。

Dask 数组

Dask 数组是分块的 numpy 数组

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 个笔记本中找到。