如何将 np.multiply 与 functools.partial 一起使用
How can I use np.multiply with functools.partial
我在将 functools.partial 与 np.multiply 一起使用时遇到问题,我不明白为什么会出现此错误。我只是在了解 partial
的工作原理,所以我可能只是犯了一个愚蠢的错误。
The error is Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_bundle/pydev_umd.py", line 194, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "/Users/shilo/PycharmProjects/Video/testing/test_functools.py", line 7, in <module>
f(x1=image,x2=2.0)
ValueError: invalid number of arguments
我尝试使用的代码如下:
from functools import partial
import cv2
import numpy as np
path = '/Users/shilo/Desktop/Goliath_preview.jpg'
image = cv2.imread(path)
f = partial(np.multiply,x1=image,x2=2.0)
f()
np.multiply 函数定义如下所示:
def multiply(x1, x2, *args, **kwargs)
我假设我只需要提供 x1 和 x2 但即使我包含 args/kwargs
它似乎也不起作用
我也试过包含文档字符串中列出的所有 kwargs,但仍然遇到相同的无效参数数量错误。
multiply(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])
通过在您的 partial
调用中命名 x1
和 x2
,您可以将它们用作 kwargs
。我觉得应该是:
f = partial(np.multiply, image, 2.0)
否则,试试
f = partial(np.multiply, image)
f(2.0)
我在将 functools.partial 与 np.multiply 一起使用时遇到问题,我不明白为什么会出现此错误。我只是在了解 partial
的工作原理,所以我可能只是犯了一个愚蠢的错误。
The error is Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_bundle/pydev_umd.py", line 194, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "/Users/shilo/PycharmProjects/Video/testing/test_functools.py", line 7, in <module>
f(x1=image,x2=2.0)
ValueError: invalid number of arguments
我尝试使用的代码如下:
from functools import partial
import cv2
import numpy as np
path = '/Users/shilo/Desktop/Goliath_preview.jpg'
image = cv2.imread(path)
f = partial(np.multiply,x1=image,x2=2.0)
f()
np.multiply 函数定义如下所示:
def multiply(x1, x2, *args, **kwargs)
我假设我只需要提供 x1 和 x2 但即使我包含 args/kwargs
我也试过包含文档字符串中列出的所有 kwargs,但仍然遇到相同的无效参数数量错误。
multiply(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])
通过在您的 partial
调用中命名 x1
和 x2
,您可以将它们用作 kwargs
。我觉得应该是:
f = partial(np.multiply, image, 2.0)
否则,试试
f = partial(np.multiply, image)
f(2.0)