Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更改维度的map_块返回索引器错误:元组索引超出范围_Python_Dask - Fatal编程技术网

Python 更改维度的map_块返回索引器错误:元组索引超出范围

Python 更改维度的map_块返回索引器错误:元组索引超出范围,python,dask,Python,Dask,我正在尝试使用dask数组创建聚合统计信息映射块似乎很理想,但无法使其工作 我是新来的dask,所以我想了解它的工作方式。我计划使用自定义函数,并从一些基础知识开始。我陷入困境,经过几个小时的尝试和错误后,我看不到解决方案 import dask import dask.array as da from numpy import median,array def func(a): m = median(a) print(m) return array(m) x = d

我正在尝试使用
dask
数组创建聚合统计信息<代码>映射块似乎很理想,但无法使其工作

我是新来的
dask
,所以我想了解它的工作方式。我计划使用自定义函数,并从一些基础知识开始。我陷入困境,经过几个小时的尝试和错误后,我看不到解决方案

import dask
import dask.array as da
from numpy import median,array

def func(a):
    m = median(a)
    print(m)
    return array(m)

x = da.random.random((10000, 10000), chunks=(5000, 5000))

x.map_blocks(func,chunks=(1,1)).compute()
我希望有一个新的数组,每个块都有结果,但得到:

nan
0.5001597269075302
0.49996143572562185
0.49994227403711916
0.5001512434686584
Traceback (most recent call last):
  ...
    result.append(tuple([shape(deepfirst(a))[dim] for a in arrays]))
IndexError: tuple index out of range

map_块
一开始可能有点棘手。这里的问题是
func
返回一个shape
()
数组,而在
map\u块中,您指示
(1,1)
的输出块

如果我理解正确,您希望将
x
的每个块替换为其中间值(这些将是大小为
(1,1)
)的新块)。为此,需要输出具有该形状的数组。请参阅以下代码:

import dask
import dask.array as da
from numpy import median,array

def func(a):
    m = median(a)
    print(m)
    return array(m)[None,None] # add dummy dimensions

# x = da.random.random((10000, 10000), chunks=(5000, 5000))
x = da.random.random((100, 100), chunks=(50, 50)) # try things out on small array

x.map_blocks(func,chunks=(1,1)).compute()
使用
None
索引数组会向其添加虚拟维度。因此,
数组(m)[None,None]
将具有所需的形状
(1,1)

另外,在这些问题解决之前,处理小数据是有意义的,我在上面的示例中添加了小数据