如何在functools.partial [duplicate]中使用np.multiply

问题描述 投票:-2回答:1

这个问题在这里已有答案:

我在使用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它似乎也不起作用

我也试过包含docstring中列出的所有kwargs,但仍然得到相同的无效参数数量错误。 multiply(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])

python numpy python-3.7
1个回答
1
投票

通过在你的x1电话中命名x2partial,你将它们用作kwargs。我认为它应该是:

f = partial(np.multiply, image, 2.0)

否则,试试吧

f = partial(np.multiply, image)
f(2.0)
© www.soinside.com 2019 - 2024. All rights reserved.