【问题标题】:What to use instead of * and / in Python to avoid ValueError? [closed]在 Python 中使用什么代替 * 和 / 来避免 ValueError? [关闭]
【发布时间】:2021-01-27 07:58:00
【问题描述】:

我遇到了与这篇文章类似的问题:

Why does this simple numpy multiply operation raise an "invalid number of arguments" error?

我的代码中有一个令人难以置信的令人困惑的方程式:

(m[0]*np.power(q[0])*q[0]*r[0]*(m[0]*R)*np.power(q[0]))/(R*((m[0]*R)*np.power(q[0])+m*np.power(q[0]))**2) - a[0]*N/(b[0]+N)

当我运行它时,它会返回错误:

ValueError:参数数量无效

我认为它可能与我用来定义指数的 ** 有关(q[0] 是一个指数),所以我将它们替换为 np.power() 没有成功。此外,我将用于定义分数的 / 更改为 *(.....)**(-1),但这也不起作用。在这一点上,我假设问题出在我用于乘法的 * 上。但是如何在这个长表达式中写乘法和除法而不引起位置错误呢?

提前感谢您的帮助!

【问题讨论】:

  • 请提供 MCVE 和堆栈跟踪。错误会告诉你它发生在哪里。您可以运行调试器来找出问题所在。
  • "我认为它可能与我用来定义指数的**有关(q[0] 是一个指数),所以我将它们替换为 np.power() 到 no成功”我不明白。求幂的预期基数是什么?求幂的预期指数是多少?当您尝试自己编写此部分时,使用** 会是什么样子,它告诉您什么确切是错误的?用np.power怎么样?
  • 链接中关于*/ 的讨论是关于函数签名文档中的符号。它与在表达式中用作运算符的***/ 无关。 np.power 明确表示它需要 2 个参数。其他参数是您不需要使用的关键字。
  • 如果其他 cmets 和答案不清楚,np.power(x, y)x**y 是等价的表达式。
  • 我已经回滚了您的编辑,并在您的问题中添加了答案。我很高兴您找到了解决问题的方法。但是,实际的答案/解决方案不应编辑到您的问题中。一般来说,您应该edit 问题来澄清问题,但不要在问题中包含答案。您应该使用用于解决问题的代码创建自己的答案,然后接受它(系统可能需要 48 小时延迟才能接受您自己的答案)。

标签: python numpy valueerror


【解决方案1】:

你必须添加另一个关于你想要什么力量的论据。
例如,power 表示添加2 比如cube表示加3

np.power(x1, 2)
np.power(x1, 3)

如果你只是想用 np.power() 进行 squre,那么我已经为你编辑了代码:

(m[0]*np.power(q[0], 2)*q[0]*r[0]*(m[0]*R)*np.power(q[0], 2))/(R*((m[0]*R)*np.power(q[0], 2)+m*np.power(q[0], 2))**2) - a[0]*N/(b[0]+N)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    相关资源
    最近更新 更多