python - Python 新手,不知道我的代码有什么问题

标签 python python-3.x numpy

我是 Python 的新手,所以请保持温柔。

我真的不知道我的代码有什么问题。

这里是:

import numpy as np

def epsilon(t):
    epsilon = (1 - np.exp(-pow(t, 4)))
    return epsilon

def r(t):
    r = pow( (epsilon(t) - 16) / 4, 1/4)
    return r

print(r(0))

由于 epsilon(0) = 0,我希望(通过分析)得到 r = (-16/4)^(1/4) = (-1)^(1/4)*sqrt(2) = exp(i pi/4)*sqrt(2) = 1 + 1 i

但我得到的是:

RuntimeWarning: invalid value encountered in double_scalars
  r = pow((4 * epsilon(t) - 16) / 4, 1/4)
nan

我试图找出错误。如果我打印 epsilon(0),我会按预期得到 0,如果我手动设置 epsilon(0),例如:

def r(t):
    r = pow( 0 - 16) / 4, 1/4)
    return r
print(r(0))

我得到 1 + 1 j。如果我将 的 1/4 次方 移除,它会起作用,我得到 -4

import numpy as np

def epsilon(t):
    epsilon = (1 - np.exp(-pow(t, 4)))
    return epsilon

def r(t):
    r = (epsilon(t) - 16) / 4
    return r

print(r(0))

那为什么要

import numpy as np

def epsilon(t):
    epsilon = (1 - np.exp(-pow(t, 4)))
    return epsilon

def r(t):
    r = pow( (epsilon(t) - 16) / 4, 1/4)
    return r

print(r(0))

我收到这个错误?

最佳答案

问题可能是由 numpy float 引起的。 (正如 Schomes 所回答的那样)。通过转换为“普通” float 进行修复。

import numpy as np

def epsilon(t):
    epsilon = (1 - np.exp(-pow(t, 4)))
    return epsilon

def r(t):
    epsi_boy = epsilon(t)
    print(type(epsi_boy)) # numpy float
    epsi_boy = float(epsi_boy) # Convert to non numpy float
    r = pow( (epsi_boy - 16) / 4,  1/4)
    return r

print(r(0))

关于python - Python 新手,不知道我的代码有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49218648/

相关文章:

python - “float”对象在列表理解中不可迭代

python - line, = plot(x,sin(x)) 逗号代表什么?

python - 有没有一种简单的方法可以在 Python 正则表达式中使用和忽略元字符之间进行切换?

python - scrapy如何防止重复数据插入数据库

python - 使用列表理解无法执行比较我该如何解决

Python:使用异常参数时出现语法错误

multithreading - cython.parallel : how to initialise thread-local ndarray buffer?

python - 排序/分组中的 Lambda 函数

使用 newaxis 对 for 循环进行 Python 时间优化

django - apache2 python 3.4.3 ubuntu 错误 wsgi no module named