У меня большой рабочий процесс, который создает два разных массива с одинаковыми формами, но разными блоками (и типами данных).Я попытался повторно разделить каждый из этих массивов (с тем же размером блока), но так как они имеют разные типы данных, блоки отличаются.Есть ли способ, которым я могу заставить каждый из этих массивов иметь одинаковую геометрию блока, чтобы я мог более легко использовать функции массива карты (в частности, мне нужно спроектировать функцию map_blocks, которая выполняет итерации по двум входным массивам dask одновременно иидентичные блоки сделают это существенно проще)Это упрощенный пример, воссоздающий проблему:
import dask.array as da
import numpy as np
arrayOne = da.random.random((96700000000), chunks=(96700000000))
arrayTwo = arrayOne >= 5
#they are the same
print(arrayOne.numblocks)
print(arrayTwo.numblocks)
#now rechunk to screw this up
arrayOne = arrayOne.rechunk({0: -1, 0: 'auto'},block_size_limit=1e6)
arrayTwo = arrayTwo.rechunk({0: -1, 0: 'auto'},block_size_limit=1e6)
print(arrayOne.numblocks)
print(arrayTwo.numblocks)
Этот код выводит: (1,) (1,) и (773600,), (96700,) Редактирование: один супер-хакерский способ исправить этоэто с использованием размера базовых данных, но я предполагаю, что должен быть лучший подход?
arrayOne = arrayOne.rechunk({0: -1, 0: 'auto'},block_size_limit=1e6)
arrayTwo = arrayTwo.rechunk({0: -1, 0: 'auto'},block_size_limit=1e6/np.dtype(arrayOne.dtype).itemsize)
Теперь есть что-нибудь, что я могу сделать, чтобы каждый из этих массивов имел одинаковое количество блоков?
Спасибо, любая помощь очень ценится!