在dask中为getitem重写操作

时间:2017-12-12 21:30:56

标签: python dask

是否有办法覆盖某些操作。

import dask
import numpy as np
a = np.zeros((10,10))
a = dask.delayed(lambda x : x*2)(a)

我希望a[0]返回一个数字(而不是必须调用a[0].compute())。 这可能吗?

上下文是我想要一系列图像(3D数组),并运行如下操作:

imgs2 = imgs - 1
imgs3 = imgs*mask

然后像imgs3[0]这样的操作显式运行imgs3[0].compute()

但是,我现在看到这个方法有很多缺点,我想删除这篇文章。首先,这是非常有限的。索引诸如imgs3[:,:, 10](所有列)之类的内容也可能必须以计算结果为最终结果。

1 个答案:

答案 0 :(得分:1)

这似乎对我很好

In [1]: import dask
   ...: import numpy as np
   ...: a = np.zeros((10,10))
   ...: a = dask.delayed(lambda x : x*2)(a)
   ...: 

In [2]: a[0]
Out[2]: Delayed('getitem-4eccd4e43153cac99d8e6d280cc1ad9c')

In [3]: a[0].compute()
Out[3]: array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])