**
)不适用于负电源!当然,我可以用其他方式编写公式,除以正和幂。但是,我正在检查优化常规结果,有时功率是负的,有时它是正的。这里再一次if语句可以做,但我想知道是否有一个workarouns和一个允许负曝光的Python库。
谢谢和问候。
答案 0 :(得分:5)
您使用的是哪个版本的python?在Python 2.6,2.7和3.2中完美适用于我:
>>> 3**-3 == 1.0/3**3
True
和numpy 1.6.1:
>>> import numpy as np
>>> arr = np.array([1,2,3,4,5], dtype='float32')
>>> arr**-3 == 1/arr**3
array([ True, True, True, True, True], dtype=bool)
答案 1 :(得分:4)
这可能是Python 3的事情,因为我使用的是3.5.1,我相信这是你的错误......
for c in np.arange(-5, 5):
print(10 ** c)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-79-7232b8da64c7> in <module>()
1 for c in np.arange(-5, 5):
----> 2 print(10 ** c)
ValueError: Integers to negative integer powers are not allowed.
只需将其更改为浮动状态即可。
for c in np.arange(-5, 5):
print(10 ** float(c))
1e-05
0.0001
0.001
0.01
0.1
1.0
10.0
100.0
1000.0
10000.0
奇怪的是,它适用于基础python 3:
for i in range(-5, 5):
print(10 ** i)
1e-05
0.0001
0.001
0.01
0.1
1
10
100
1000
10000
它似乎适用于Python 2.7.12:
Python 2.7.12 (default, Oct 11 2016, 05:24:00)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.38)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> for c in np.arange(-5, 5):
... print(10 ** c)
...
1e-05
0.0001
0.001
0.01
0.1
1
10
100
1000
10000
答案 2 :(得分:1)
也许使用内置的NumPy / SciPy, 电源
>>> import numpy as NP
>>> A = 10*NP.random.rand(12).reshape(4, 3)
>>> A
array([[ 5.7 , 5.05, 7.28],
[ 3.61, 9.67, 6.27],
[ 5.29, 2.8 , 0.58],
[ 5.94, 4.9 , 1.68]])
>>> NP.power(A, -2)
array([[ 0.03, 0.04, 0.02],
[ 0.08, 0.01, 0.03],
[ 0.04, 0.13, 2.98],
[ 0.03, 0.04, 0.35]])
答案 3 :(得分:0)
我以为我遇到了同样的事情,但我意识到我没有强迫数组成为浮点数。有一次,我做了,它表现得像我预期的那样。你有可能做类似的事吗?
>>> import numpy as np
>>> arr = np.array([[1,2,3,4],[8,9,10,11]])
>>> arr
array([[ 1, 2, 3, 4],
[ 8, 9, 10, 11]])
>>> arr ** -1
array([[1, 0, 0, 0],
[0, 0, 0, 0]])
>>> arr ** -1.0
array([[ 1. , 0.5 , 0.33333333, 0.25 ],
[ 0.125 , 0.11111111, 0.1 , 0.09090909]])
答案 4 :(得分:0)
我在Python 2.7中遇到了同样的问题,最终将exponents映射到float。但不能说这是最好的解决方案。
np.power(10, map(lambda n: float(n), np.arange(-5, 6)))