【问题标题】:I'm getting an error <string>:149: RuntimeWarning: invalid value encountered in sqrt while generating a list我收到一个错误 <string>:149: RuntimeWarning: 在生成列表时在 sqrt 中遇到无效值
【发布时间】:2014-04-08 23:06:15
【问题描述】:
def ellipse(numPoints, genX=np.linspace, HALF_WIDTH=10, HALF_HEIGHT=6.5):
    xs = 10.*genX(-1,1,numPoints)
    ys = 6.5*np.sqrt(1-(xs**2))
    return(xs, ys, "-")

我收到一条错误消息,指出在平方根中遇到了无效值。我看不到它是什么。

sqrt(0) = 0
6.5*sqrt(1- (-1**2)) = 0

它们应该可以工作,但是 y 值有问题,它们返回“nan”

【问题讨论】:

标签: python numpy sqrt


【解决方案1】:

可能xs**2 返回一个数字&gt; 1 带有负数的 sqrt 将返回 nan(不是数字)

>>> import numpy as np
>>> np.sqrt(-1)
nan

如果我是对的,numpy 提供了复数功能,我认为这是表示 x 的 sqrt(x) 的唯一方法

【讨论】:

  • 当我从 -1 变为 1 时,不应该有任何值是负数的平方根。编辑* 我现在看到了
  • 我应该有 6.5*sqrt(100-(xs**2))
  • 如果你想让 numpy 在这种情况下给出错误,你可以使用np.seterr(all='raise') 并且会给出FloatingPointError: invalid value encountered in sqrt 而不是nan。更多信息在这里docs.scipy.org/doc/numpy/user/…
猜你喜欢
  • 2016-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-11
  • 2016-10-13
  • 2013-01-29
  • 2021-02-07
  • 1970-01-01
相关资源
最近更新 更多