【发布时间】:2021-06-11 14:23:15
【问题描述】:
有没有办法可以在纯 numpy 上运行下面的函数,所以我试图摆脱 for 循环。我正在尝试减少代码的运行时间。 Number_array 与Values 的每个元素相加并求和。每次迭代后,总和会附加到 Appending_list 上。 Number_array 在 0 到 100 之间生成 10000000 个整数。
代码:
import numpy as np
from numpy import random
Appending_list = []
Values = random.randint(100, size=(100000))
Number_array = random.randint(100, size=(1000))
for n in range(len(Values)):
result = np.sum([Number_array + Values[n]])
Appending_list.append(result)
性能:
【问题讨论】:
-
您是否尝试过显而易见的方法,只计算
np.sum(Number_array)一次 并调整Values中每个值的总和? -
那个循环也不是问题,几乎所有的工作都已经由 NumPy 完成了。
-
我不明白和位的调整?我知道 for 循环并没有减慢它的速度,但那是因为 n 值的长度太小了。如果我增加 n 值的长度,它将开始对处理时间产生影响。我已经更新了代码,这可能是一个更好的例子
-
嗯,所以你无法确定
np.sum([Number_array + Values[n]])和np.sum(Number_array)之间的区别?或者您的个人资料图片是否准确? -
哦,我明白你的意思了,但是如果值的 len 非常大,也会极大地影响性能。因为它遍历了一个 for 循环。
标签: python arrays numpy for-loop sum