我只是想知道是否有人可以帮助我如何使用dask在掩码数组上应用“ sum”或“ mean”之类的函数。我希望仅在没有掩码的值上计算数组的和/平均值。
代码:
import dask.array as da
import numpy as np
import numpy.ma as ma
dset = [1, 2, 3, 4]
masked = ma.masked_equal(dset, (4)) # lets say 4 should be masked
print(np.sum(masked)) # output: 6
print(np.mean(masked)) # output: 2
print(masked) # output: [1, 2, 3, -]
masked_array = da.from_array(masked, chunks=(4))
print(masked_array.sum().compute(): # output: 10
print(masked_array.mean().compute()) # output: 2.5
有没有一种方法可以使我的掩码和等于np.sum(masked),而掩码均值等于2,而忽略“ 4”值呢?看来numpy可以忽略其计算中的“ 4”,但在这种情况下则不能。
答案 0 :(得分:0)
Dask 支持对掩码数组的多种操作,完整列表在 Dask' docs 中可用。
计算屏蔽数组的均值和总和的示例:
import dask
import dask.array as da
dset = da.array([1, 2, 3, 4])
mdata = da.ma.masked_equal(dset, 4)
print(da.sum(mdata).compute()) # output: 6
print(da.ma.average(mdata).compute()) # output: 2