python - 用 numpy 数组对任意数字进行指数化
问题描述
我知道np.exp2(x)
存在计算2^x
wherex
是一个 numpy 数组的存在,但是,我正在寻找一种方法来计算K^x
whereK
是任意数字。有没有什么优雅的方法来做,而不是延伸K
到形状x
并做一个分段指数?
解决方案
只需使用标准的 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。
推荐阅读
- c++ - g++ 在使用“-Wno-deprecated”时不会忽略“deprecated-declaration”+“Werror”错误
- javascript - 工具栏的Webkit动画
- django - Django Rest Framework - PermissionDenied 引发 500 状态码
- facebook - Facebook 服务器发送的实时评论事件
- angular - 注意何时渲染角度组件及其子项
- php - 在 Dokan Vendor 插件上添加新产品后如何禁用重定向
- python - 在python 3中查找表中名字第一个字符的频率分布
- docker - Docker 构建失败 - 带有 GKE 的 Gitlab CI。无法通过 tcp://localhost:2375 连接到 Docker 守护程序。docker 守护进程是否正在运行?
- javascript - 无法读取 Win 10 上未定义和 Firebase 升级的属性引用
- c++ - spdlog 工厂方法崩溃