考虑下面的代码片段,其中我试图创建一个dask数组,其中包含大小为(3, 4, 5)的非对称但重复的块
import numpy as np
import dask.array as da
a = np.random.randint(0, 9, (3, 12, 10))
d = da.from_array(a, chunks=(3, 4, 5))上面的代码片段没有抛出任何错误/警告。但当我尝试执行以下操作时:
r = d.map_blocks(np.sum)
out = r.compute()它抛出以下错误:
python3.7/site-packages/dask/array/core.py in <listcomp>(.0)
4099
4100 while isinstance(arrays, (list, tuple)):
-> 4101 result.append(tuple([shape(deepfirst(a))[dim] for a in arrays]))
4102 arrays = arrays[0]
4103 dim += 1
IndexError: tuple index out of range我做错了什么?
发布于 2020-02-16 03:27:28
如果您选中map_block docs here。在chunks参数描述下,它说:
“如果未提供,则假定结果数组与第一个输入数组具有相同的块结构。”
所以你的sum函数应该是这样的:
def compute_block_sum(block):
return np.array([[np.sum(block)]])[:,None]然后你就做了
d.map_blocks(compute_block_sum).compute()https://stackoverflow.com/questions/60240923
复制相似问题