迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

如何在 Python 中进行幂运算

作者:迹忆客 最近更新:2023/12/21 浏览次数:

本教程将演示如何在 Python 中进行幂运算/指数计算。

python 指数

在数学中,幂运算/指数运算是一个数字与自身相乘的操作。

Python 提供了内置的操作和函数来帮助执行幂运算。


在 Python 中使用**运算符来进行幂运算

大多数开发人员似乎认为插入符号^是获取数字幂的运算符,因为插入符号在数学中被用作指数的符号。然而,在大多数编程语言中,插入符号被保留给按位 xor 运算符。

在 Python 中,指数运算符由基数和指数之间的两个连续的星号**来表示。

指数运算符的功能补充了乘法运算符*的行为,不同的是指数运算符中的第二个操作数是用来设置第一个操作数与自己相乘的次数。

print(5 ** 6)

要将数字 5 与自身相乘 6 倍,请在基本操作数 5 和指数操作数 6 之间使用操作数**

输出:

15625

让我们在不同类型的数值上测试这个运算符。

我们将初始化一个整数、一个负数、零和两个小于 1 和大于 1 的浮点数。然后我们将分配随机整数作为它们的指数。

num1 = 2
num2 = -5
num3 = 0
num4 = 1.025
num5 = 0.5

print(num1, "^12=", num1 ** 12)
print(num2, "^4=", num2 ** 4)
print(num3, "^9999=", num3 ** 9999)
print(num4, "^-3=", num4 ** -3)
print(num5, "^8=", num5 ** 8)

输出:

2^12= 4096
-5^4= 625
0^9999= 0
1.025^-3= 0.928599410919749
0.5^8= 0.00390625

在 Python 中使用 pow()math.power() 做指数运算

在 Python 中做指数的另一种方法是使用函数 pow(),该函数被设计用来对给定基数和指数的值进行指数化。math 模块也有自己的 pow() 的实现,用于同样的目的。

这两个函数都有 2 个参数,第一个参数是基数,第二个是指数。

让我们尝试用相同的参数多次调用这两个函数,以便比较它们的输出。

import math

print(pow(-8, 7))
print(math.pow(-8, 7))

print(pow(2, 1.5))
print(math.pow(2, 1.5))

print(pow(4, 3))
print(math.pow(4, 3))

print(pow(2.0, 5))
print(math.pow(2.0, 5))

输出:

-2097152
-2097152.0
2.8284271247461903
2.8284271247461903
64
64.0
32.0
32.0

结果的唯一区别是 math.pow() 即使传递了整数参数,也总是返回一个 float 值,而 pow() 只有当至少有一个 float 参数时才会返回 float


在 Python 中使用 numpy.np() 做指数运算

模块 NumPy 也有自己的指数函数 power()power() 接受与 pow() 函数相同的参数,其中第一个参数是基础值,第二个参数是指数值。

要使用 NumPy,我们应该通过 pippip3 安装它。

  • Python 2:
pip install numpy
  • Python 3:
pip3 install numpy

让我们用 numpy.power()pow() 中打印出同一组例子。

print(np.power(-8, 7))
print(np.power(2, 1.5))
print(np.power(4, 3))
print(np.power(2.0, 5))

输出:

-2097152
2.8284271247461903
64
32.0

power() 产生的输出和内置的 Python 函数 pow() 一样,如果没有 float 参数,它将返回一个整数。


比较每个解决方案的运行时间

我们来比较一下这 3 个函数和**运算符在大指数值下运行的时间。对于计时函数,我们会导入 timeit 模块来打印出每个解的运行时间。

基数的值是 2,指数的值是 99999

import numpy as np
import math
import time

start = time.process_time()
val = 2 ** 99999
print("** took", time.process_time() - start, "ms")

start = time.process_time()
val = pow(2, 99999)
print("pow() took", time.process_time() - start, "ms")

start = time.process_time()
val = np.power(2, 99999)
print("np.power() took", time.process_time() - start, "ms")

start = time.process_time()
val = math.pow(2, 99999)
print("math.pow() took", time.process_time() - start, "ms")

输出:

** took 0.0006959999999999744 ms

pow() took 0.00039000000000000146 ms

np.power() took 1.6999999999989246e-05 ms

Traceback (most recent call last):
  File "/Users/rayven/python/timeit.py", line 15, in <module>
    val = math.pow(2,99999)
OverflowError: math range error

最明显的是 math.pow() 产生了一个 OverflowError。这意味着 math.pow() 不能支持大值指数,很可能是因为这个模块实现指数的方式。

其他 3 种方法之间的区别是微不足道的,但从这个例子来看,np.power() 是执行指数化最快的函数。

如果我们尝试将指数还原为 9999 呢?让我们看看 math.pow() 的输出结果。

** took 1.0000000000010001e-05 ms
pow() took 4.000000000004e-06 ms
np.power() took 2.0000000000020002e-05 ms
math.pow() took 2.9999999999752447e-06 ms

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Python 中将 NumPy 数组转换为列表

发布时间:2023/12/24 浏览次数:102 分类:Python

本教程演示了如何将 numpy 数组转换为 Python 中的列表。列表和数组是 Python 中两个最基本且最常用的集合对象。

Python 中追加二维数组

发布时间:2023/12/24 浏览次数:158 分类:Python

本教程讨论如何在 Python 中将值附加到二维数组。在 Python 中,我们可以有 ND 数组。我们可以使用 NumPy 模块在 Python 中处理数组。

在 Python 中将数组写入文本文件

发布时间:2023/12/24 浏览次数:68 分类:Python

本教程演示如何在 python 中将数组保存到文本文件中。读取和写入文件是构建许多用户使用的程序的一个重要方面。Python 提供了一系列可用于资源处理的方法。

Python 导出到 Excel

发布时间:2023/12/24 浏览次数:129 分类:Python

有四种主要方法可用于在 Python 中将数据写入 Excel 文件,DataFrame.to_excel() 方法、xlwt 库、openpyxl 库和 XlsWriter 库。

使用 Selenium Python 在浏览器中打开和关闭标签页

发布时间:2023/12/24 浏览次数:92 分类:Python

本教程演示了如何在 Python 中使用 Selenium 在浏览器中自动打开一个新标签页。Selenium 是强大的 Web 自动化和测试工具。我们使用 Selenium 编写脚本,它可以控制 Web 浏览器并执行特定操作。

Conda 安装 Cv2

发布时间:2023/12/24 浏览次数:106 分类:Python

本教程演示了如何在 Python 中为 anaconda 用户安装 cv2 模块。互联网上有许多可用的 Python IDE。一种这样的 Python IDE 是 Anaconda,这是一种开源软件

Python 中 NumPy 数组的滑动平均值

发布时间:2023/12/24 浏览次数:145 分类:Python

本教程演示了如何在 python 中计算 numpy 数组的滑动平均值。滑动平均值通常用于通过计算特定时间间隔的数据平均值来研究时间序列数据。

在 Python 中计算马氏距离

发布时间:2023/12/24 浏览次数:125 分类:Python

有两个主要方法可用于在 Python 中查找两个 NumPy 数组之间的马氏距离,scipy 库中的 cdist() 函数和 numpy 包中的 numpy.einsum() 函数。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便