你觉得 Python 慢吗?这是一种在 Python 中循环的快速方法——Python 以慢速编程语言而闻名。尽管 Python 比其他语言慢是一个事实,但还是有一些方法可以加快我们的 Python 代码速度。如何?很简单,优化你的代码。如果我们编写的代码消耗很少的内存和存储空间,我们不仅会得到……
一种在 Python 中循环的超快速方法
你觉得 Python 慢吗?这是一种在 Python 中循环的快速方法
Python以慢速编程语言而闻名。尽管 Python 比其他语言慢是一个事实,但还是有一些方法可以加快我们的 Python 代码速度。
如何?很简单,优化你的代码。
如果我们编写的代码消耗很少的内存和存储空间,我们不仅可以完成工作,还可以让我们的 Python 代码运行得更快。
这是我在我参加的一门 Python 课程中学到的一种快速且超快速的循环 Python 方法(我们从未停止学习!)。
[0]
The average loop
假设我们想对从 1 到 100000000 的数字求和(我们可能永远不会这样做,但这个大数字将帮助我表达我的观点)。
一种典型的方法是创建一个变量 total_sum=0,循环遍历一个范围,并在每次迭代时将 total_sum 的值增加 i。
这可以完成工作,但大约需要 6.58 秒。
虽然现在看起来并没有那么慢,但是当你在范围内的数字上添加更多的 0 时,它会变得更慢。
让我们加快速度!
使用内置函数的更快循环方式
在 Python 中循环的一种更快的方法是使用内置函数。
在我们的示例中,我们可以将 for 循环替换为 sum 函数。此函数将对数字范围内的值求和。
上面的代码需要 0.84 秒。这比我们之前使用的循环要快得多!这就是为什么我们应该选择内置函数而不是循环。
但仍有改进的余地。
一种使用 Numpy 进行循环的超快速方法
几周前,在我参加的一门数据科学课程中,我了解到要成为一名更好的数据科学家,我应该遵循的软件工程实践之一就是优化我的代码。
[0]
我们可以通过向量化操作来优化循环。这比纯 Python 等价物快一/两个数量级(尤其是在数值计算中)。
矢量化是我们可以通过 NumPy 获得的东西。 Numpy 是一个具有高效数据结构的库,旨在保存矩阵数据。它主要是用 C 语言编写的,所以速度是您可以信赖的。
让我们尝试使用 Numpy 方法 .sum 和 .arange 代替 Python 函数。
这可以在 0.22 秒内完成工作。这比以前的方法快得多。
这就是为什么您应该尽可能在循环上使用向量操作的原因。
通过更多计算测试循环和 Numpy
到目前为止,我们已经看到了 Numpy 的一个简单应用,但是如果我们不仅有一个 for 循环,还有一个 if 条件和更多的计算要做呢?
这是 Numpy 明显优于循环的时候。
想象一下,我们有一个随机考试分数数组(从 1 到 100),我们想要获得未通过考试的人的平均分数(分数<70)。
下面是我们如何使用 for 循环来做到这一点。
import time
import numpy as np
random_scores = np.random.randint(1, 100, size=100000010)
# SOL1: solving problem using a for loop
start = time.time()
count_failed = 0
sum_failed = 0
for score in random_scores:
if score < 70:
sum_failed += score
count_failed += 1
print(sum_failed/count_failed)
print(f'For Loop: {time.time() - start} seconds')
这大约需要 15.7 秒。不错,但我们可以使用 Numpy 获得更快的结果。
这是我们如何使用 Numpy 执行此操作的方法。
上面的代码大约需要 0.78 秒。这样更快,代码也很简单!
用 Python 学习数据科学?加入我的电子邮件列表与 10k+ 人一起获取我的免费 Python for Data Science Cheat Sheet。
[0]
如果您喜欢阅读此类故事并希望支持我作为作家,请考虑注册成为 Medium 会员。每月 5 美元,让您可以无限制地访问数以千计的 Python 指南和数据科学文章。如果您使用我的链接注册,我将赚取少量佣金,您无需支付额外费用。
[0]