首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dask数组分块在三维或更多维度上是如何工作的?

dask数组分块在三维或更多维度上是如何工作的?
EN

Stack Overflow用户
提问于 2020-02-16 00:48:49
回答 1查看 70关注 0票数 1

考虑下面的代码片段,其中我试图创建一个dask数组,其中包含大小为(3, 4, 5)的非对称但重复的块

代码语言:javascript
复制
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))

上面的代码片段没有抛出任何错误/警告。但当我尝试执行以下操作时:

代码语言:javascript
复制
r = d.map_blocks(np.sum)
out = r.compute()

它抛出以下错误:

代码语言:javascript
复制
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

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-16 03:27:28

如果您选中map_block docs here。在chunks参数描述下,它说:

“如果未提供,则假定结果数组与第一个输入数组具有相同的块结构。”

所以你的sum函数应该是这样的:

代码语言:javascript
复制
def compute_block_sum(block):
    return np.array([[np.sum(block)]])[:,None]

然后你就做了

代码语言:javascript
复制
d.map_blocks(compute_block_sum).compute()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60240923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档