Отчеты об ошибках Dask: вызов map_blocks с ошибкой непревзойденного измерения

#dask #dask-distributed

#dask #dask-распределенный

Вопрос:

Вот минимальная воспроизводимая проблема.

При вызове map_blocks отображается «Ошибка значения: предоставленные фрагменты имеют 3 dimm, ожидается 4 dimm».

Вот мой код,

 import dask.array as da

x = da.ones((10, 5, 10, 10), chunks=(10, 1, 2, 2))
a = x.map_blocks(f, chunks=(1, 2, 2))
  

где

 def f(block):
    return block.max(0)
  

Функция f уменьшит количество входных данных.

И результаты показывают, что измерения не имеют аналогов.

 ---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-4-51c4f85f71a8> in <module>
----> 1 a = x.map_blocks(f, chunks=(1, 2, 2))
      2 a

~anaconda3libsite-packagesdaskarraycore.py in map_blocks(self, func, *args, **kwargs)
   2116     @wraps(map_blocks)
   2117     def map_blocks(self, func, *args, **kwargs):
-> 2118         return map_blocks(func, self, *args, **kwargs)
   2119 
   2120     def map_overlap(self, func, depth, boundary=None, trim=True, **kwargs):

~anaconda3libsite-packagesdaskarraycore.py in map_blocks(func, name, token, dtype, chunks, drop_axis, new_axis, meta, *args, **kwargs)
    617             raise ValueError(
    618                 "Provided chunks have {0} dims, expected {1} "
--> 619                 "dims.".format(len(chunks), len(out_ind))
    620             )
    621         adjust_chunks = dict(zip(out_ind, chunks))

ValueError: Provided chunks have 3 dims, expected 4 dims.
  

Ответ №1:

Смотрите map_blocks(drop_axis=...) ключевое слово

Комментарии:

1. MRocklin, спасибо за ваши предложения. Это работает хорошо.