Dask эквивалент NumPy (Convolve + Hstack)? - PullRequest
0 голосов
/ 14 ноября 2018

В настоящее время у меня есть функция, которая вычисляет скользящую сумму по массиву 1-D numpy (вектор), используя convolve и hstack. Я хотел бы создать эквивалентную функцию, используя dask, но различные способы, которые я пробовал до сих пор, не сработали.

То, что я пытаюсь сделать, - это вычислить «скользящую сумму» из n чисел массива, если только любое из чисел не является NaN, в этом случае сумма также должна быть NaN. Элементами (n - 1) результата также должен быть NaN, так как не предполагается переворачивание / охват сзади.

Например:

input vector: [3, 4, 6, 2, 1, 3, 5, np.NaN, 8, 5, 6] 
n: 3
result: [NaN, NaN, 13, 12, 9, 6, 9, NaN, NaN, NaN, 19]

или

input vector: [1, 5, 7, 2, 3, 4, 9, 6, 3, 8]
n: 4
result: [NaN, NaN, NaN, 15, 17, 16, 18, 22, 22, 26]

Функция, которую я сейчас использую для этого, используя функции numpy:

def sum_to_scale(values, scale):

    # don't bother if the number of values to sum is 1 (will result in duplicate array)
    if scale == 1:
        return values

    # get the valid sliding summations with 1D convolution
    sliding_sums = np.convolve(values, np.ones(scale), mode="valid")

    # pad the first (n - 1) elements of the array with NaN values
    return np.hstack(([np.NaN] * (scale - 1), sliding_sums))

Как я могу сделать выше, используя API массива dask (и / или dask_image.ndfilters ) для достижения той же функциональности?

Заранее спасибо за любые предложения или понимание.

...