有没有办法使用Python Dask包来模仿Numpy蒙版数组并考虑掩码进行计算,比如Numpy:
import numpy as np
data = np.array([0, 1, 9999, 2, 1, 0, 9999])
value = 9999
mdata = np.ma.masked_where(data == value, data)
result = (mdata * 2 + 10)
在包文档中,我发现dask.arrays相当于Numpy ndarrays并且没有掩码。另外,用另一个阵列切片似乎也不可能。因此,我找不到仅对数组的部分进行计算的方法。
答案 0 :(得分:0)
你是对的,截至2016年12月,Dask.array不支持屏蔽数组。
此外,Dask.array需要知道每个步骤中每个块的形状,因此不支持使用另一个dask数组(这需要我们知道该点的值)进行切片。
答案 1 :(得分:0)
自 2017 年 5 月以来,Dask 支持对数组进行基本操作的掩码数组 (git link)。
下面的代码片段产生与 numpy 相同的结果。
import dask
import dask.array as da
data = da.array([0, 1, 9999, 2, 1, 0, 9999])
value = 9999
mdata = da.ma.masked_where(data == value, data)
result = (mdata * 2 + 10).compute()