首页 > 解决方案 > 用 numpy 数组对任意数字进行指数化

问题描述

我知道np.exp2(x)存在计算2^xwherex是一个 numpy 数组的存在,但是,我正在寻找一种方法来计算K^xwhereK是任意数字。有没有什么优雅的方法来做,而不是延伸K到形状x并做一个分段指数?

标签: pythonnumpy

解决方案


只需使用标准的 Python 幂运算符**

K**x

例如,如果您有:

x = np.array([1,2,3])
K = 3

print(K**x)

输出是:

[ 3  9 27]

笔记

对于 Python 类,二元**运算符的行为是通过__pow____rpow____ipow__魔术方法实现的(实际np.ndarray情况稍微复杂一些,因为它是在 C 层实现的,但这实际上并不重要)。对于 Numpy 数组,这些神奇的方法反过来似乎调用numpy.power,因此您可以期望它**具有与记录的相同的行为numpy.power。尤其是,

请注意,整数类型的负整数幂将引发 ValueError。


推荐阅读