在Python 2.7中,将整数提升为负整数幂

在Python 2.7中,将整数提升为负整数幂,python,python-2.7,numpy,Python,Python 2.7,Numpy,我很难将这个Matlab代码翻译成Python 我将向你展示我迄今为止的努力 这是matlab代码 Sigma=BW1/(2*(2*(-log(10^(att_bw/10)))^(1/订单))^(1/2)) 现在我尝试使用Python power运算符,正如我今天早上早些时候学习的那样** 我的代码是 BW1 = np.array([100]) att_bw = np.array([-3]) Order = np.array([1]) Sigma = BW1/(2*(2*(-np.log(10*

我很难将这个Matlab代码翻译成Python

我将向你展示我迄今为止的努力

这是matlab代码

Sigma=BW1/(2*(2*(-log(10^(att_bw/10)))^(1/订单))^(1/2))

现在我尝试使用Python power运算符,正如我今天早上早些时候学习的那样
**

我的代码是

BW1 = np.array([100])
att_bw = np.array([-3])
Order = np.array([1])
Sigma = BW1/(2*(2*(-np.log(10**(att_bw[0]/10)))**(1/Order))**(1/2))
但不幸的是,它说它不能处理消极力量

西格玛的结果应该是
42.539


编辑:看来我的代码在Python3中运行得非常好。然而,我仍然坚持使用Python 2.7。有什么简单的方法可以移植它吗?

在python2中,您需要确保使用浮点数。要使它们成为这样,请在公式中的每个整数后面添加

像这样:

import numpy as np

BW1 = np.array([100])
att_bw = np.array([-3])
Order = np.array([1])
Sigma = BW1/(2.*(2.*(-np.log(10.**(att_bw[0]/10.)))**(1./Order))**(1./2.))
print Sigma
输出

[42.53892736]

@TEDLYNMO BW而不是BW1这是一个打字错误。我有负能量。att_bw为-3可能也值得利用一些数学恒等式;e、 g.
np.log(10**x)
np.log(10)*x
但不会超过或低于-flow@TedLyngmo你能在这里添加答案作为评论吗?我非常感激我不明白我的代码是如何为你工作的。I get ValueError:不允许整数到负整数幂。因为在某一点上,我向att_btw[0]提出了一些东西,它是-3和一个负数,这反过来会导致程序失败。我使用的是Python 2.7.18。这可能是原因吗?