将参数转发到 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 版本。 :)