将参数转发到 python 中的正确嵌套函数
Forwarding arguments to the right nested functions in python
dask apply_along_axis
函数具有以下签名:
dask.array.apply_along_axis(func1d, axis, arr, *args, dtype=None, shape=None, **kwargs)
在我的例子中,func1d
具有以下签名:
my_fun(arr, x, xp, propagate=True)
我需要指定 dtype 和 shape 参数(它们默认为 None
不适合我的情况)。我不熟悉 *args 和 **kwargs 语法(我来自 C++,使用模板参数包语法),即使我尝试了数字调用形式,我也总能得到一些结果 my_fun() got an unexpected keyword argument 'shape'
.
如何调用此函数以将正确的参数传递给正确的函数?
可复制示例:
import dask
import dask.array as da
import numpy as np
def my_fun(data, x, xp):
return data
new_array = np.zeros((100,100,100))
big_array=da.from_array(new_array, chunks=(100,100,100))
x="foo"
xp="fee"
interpolated = da.apply_along_axis(func1d=my_fun, axis=0, arr=big_array, shape=big_array.shape, dtype=big_array.dtype, x=x, xp=xp).compute()
Returns:
Traceback (most recent call last):
File "parallelDask.py", line 28, in <module>
interpolated = da.apply_along_axis(func1d=my_fun, axis=0, arr=big_array, shape=big_array.shape, dtype=big_array.dtype, x=x, xp=xp).compute()
File "/home/becheler/dev/virtual_environments/crumbs-env/lib/python3.8/site-packages/dask/array/routines.py", line 304, in apply_along_axis
test_result = np.array(func1d(test_data, *args, **kwargs))
TypeError: my_fun() got an unexpected keyword argument 'shape'
编辑:我认为它非常接近 this issue 但我不知道如何解决这个问题。
更新 Dask 版本修复了这个问题。我们已经验证这适用于 Dask 2022.3.0
——回答时最新的 Dask 版本。 :)
dask apply_along_axis
函数具有以下签名:
dask.array.apply_along_axis(func1d, axis, arr, *args, dtype=None, shape=None, **kwargs)
在我的例子中,func1d
具有以下签名:
my_fun(arr, x, xp, propagate=True)
我需要指定 dtype 和 shape 参数(它们默认为 None
不适合我的情况)。我不熟悉 *args 和 **kwargs 语法(我来自 C++,使用模板参数包语法),即使我尝试了数字调用形式,我也总能得到一些结果 my_fun() got an unexpected keyword argument 'shape'
.
如何调用此函数以将正确的参数传递给正确的函数?
可复制示例:
import dask
import dask.array as da
import numpy as np
def my_fun(data, x, xp):
return data
new_array = np.zeros((100,100,100))
big_array=da.from_array(new_array, chunks=(100,100,100))
x="foo"
xp="fee"
interpolated = da.apply_along_axis(func1d=my_fun, axis=0, arr=big_array, shape=big_array.shape, dtype=big_array.dtype, x=x, xp=xp).compute()
Returns:
Traceback (most recent call last):
File "parallelDask.py", line 28, in <module>
interpolated = da.apply_along_axis(func1d=my_fun, axis=0, arr=big_array, shape=big_array.shape, dtype=big_array.dtype, x=x, xp=xp).compute()
File "/home/becheler/dev/virtual_environments/crumbs-env/lib/python3.8/site-packages/dask/array/routines.py", line 304, in apply_along_axis
test_result = np.array(func1d(test_data, *args, **kwargs))
TypeError: my_fun() got an unexpected keyword argument 'shape'
编辑:我认为它非常接近 this issue 但我不知道如何解决这个问题。
更新 Dask 版本修复了这个问题。我们已经验证这适用于 Dask 2022.3.0
——回答时最新的 Dask 版本。 :)