我知道np.exp2(x)
存在,它可以计算2^x
,其中x
是一个numpy数组,但是,我正在寻找一种执行K^x
的方法,其中K
是任意数字。
是否有任何优雅的方法可以做到,而不是将K
拉伸成x
的形状并进行分段指数计算?
答案 0 :(得分:2)
只需使用标准的Python幂运算符**
:
K**x
例如,如果您拥有:
x = np.array([1,2,3])
K = 3
print(K**x)
输出为:
[ 3 9 27]
对于Python类,二进制**
运算符的行为是通过__pow__
,__rpow__
和__ipow__
魔术方法({{1}的实际情况)实现的}稍微复杂一点,因为它是在C层中实现的,但这实际上并不重要。对于Numpy数组,这些魔术方法似乎依次调用numpy.power
,因此可以预期np.ndarray
具有与**
相同的行为。特别是
请注意,将整数类型提高为负整数次幂将引发ValueError。
答案 1 :(得分:2)
使用numpy,您只需使用numpy.power
arr = numpy.array([1,2,3])
print(numpy.power(3,arr)) # Outputs [ 3 9 27]