Обходной путь для назначения элемента не поддерживается в dask - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь преобразовать мою кодовую базу из массива numpy в dask, потому что мои массивы numpy превышают предел Memory Error. Но я узнал, что функция изменяемых массивов еще не реализована в dask arrays, поэтому я получаю
NotImplementedError: Item assignment with <class 'tuple'> not supported
Есть ли обходной путь для моего кода ниже -

for i, mask in enumerate(masks):
    bounds = find_boundaries(mask, mode='inner')
    X2, Y2 = np.nonzero(bounds)
    X2 = da.from_array(X2, 'auto')
    Y2 = da.from_array(Y2, 'auto')
    xSum = (X2.reshape(-1, 1) - X1.reshape(1, -1)) ** 2
    ySum = (Y2.reshape(-1, 1) - Y1.reshape(1, -1)) ** 2
    #Failing on below line
    distMap[:,i] = da.sqrt(xSum + ySum).min(axis=0)

    break
* 1008Я также попытался вычислить все другие вычисления в dask и использовать distMap в качестве массива, но все равно получил Memory Error. Любые обходные пути приветствуются.

1 Ответ

1 голос
/ 09 октября 2019

Может быть, вы можете создать множество массивов dask и затем использовать da.concatenate или da.stack, чтобы объединить их в один массив dask?

...