为什么 map_block 函数 运行 两次?
Why is map_block function run twice?
我有一个问题,为什么 map_block
函数 运行 两次?当我运行下面的例子:
import dask.array as da
import numpy as np
def derivative(x):
print(x.shape)
return x - np.roll(x, 1)
x = np.array([1, 1, 2, 3, 3, 3, 2, 1, 1])
d = da.from_array(x, chunks = 5)
y = d.map_blocks(derivative)
res = y.compute()
我得到这个输出:
(1L,)
(5L,)
(4L,)
由于我的块是 ((5, 4),),我假设 derivative
函数必须以某种方式 运行 之前真正在这些块上执行一次,对吗?
我有 python v2.7 和 dask
v0.13.0。
如果您没有为 map-blocks 调用提供数据类型,那么它会在一个很小的样本数据集(因此是单例形状)上尝试 运行 您的函数。如果您知道,可以通过显式传递 dtype 来避免这种情况。
y = d.map_blocks(derivative, dtype=d.dtype)
我有一个问题,为什么 map_block
函数 运行 两次?当我运行下面的例子:
import dask.array as da
import numpy as np
def derivative(x):
print(x.shape)
return x - np.roll(x, 1)
x = np.array([1, 1, 2, 3, 3, 3, 2, 1, 1])
d = da.from_array(x, chunks = 5)
y = d.map_blocks(derivative)
res = y.compute()
我得到这个输出:
(1L,)
(5L,)
(4L,)
由于我的块是 ((5, 4),),我假设 derivative
函数必须以某种方式 运行 之前真正在这些块上执行一次,对吗?
我有 python v2.7 和 dask
v0.13.0。
如果您没有为 map-blocks 调用提供数据类型,那么它会在一个很小的样本数据集(因此是单例形状)上尝试 运行 您的函数。如果您知道,可以通过显式传递 dtype 来避免这种情况。
y = d.map_blocks(derivative, dtype=d.dtype)