使用numpython提高迭代函数的性能
是否有一种方法可以在纯numpy上运行下面的函数,因此我正在尝试摆脱for循环。我试图减少代码的运行时间<代码>数字数组与每个使用numpython提高迭代函数的性能,python,arrays,numpy,for-loop,sum,Python,Arrays,Numpy,For Loop,Sum,是否有一种方法可以在纯numpy上运行下面的函数,因此我正在尝试摆脱for循环。我试图减少代码的运行时间数字数组与每个值元素一起添加并求和。每次迭代后,总和被追加到追加列表中。Number\u数组生成10000000个介于0到100之间的整数 代码: 性能: 用于比较的代码: Appending_list = [] for n in range(len(Values)): result = np.sum([Number_array + Values[n]]) Appending_
值元素一起添加并求和。每次迭代后,总和被追加到追加列表中。Number\u数组
生成10000000个介于0到100之间的整数
代码:
性能:
用于比较的代码:
Appending_list = []
for n in range(len(Values)):
result = np.sum([Number_array + Values[n]])
Appending_list.append(result)
以另一种方式书写总和:
Appending_list = []
for n in range(len(Values)):
result = np.sum(Number_array) + Values[n] * len(Number_array)
Appending_list.append(result)
这很容易矢量化:
Appending_list = np.sum(Number_array) + Values * len(Number_array)
您是否尝试过显而易见的方法,只计算一次np.sum(Number\u array)
,并调整Values
中每个值的和?这个循环也不是问题,几乎所有的工作都已经由NumPy完成了。我不理解和位的调整?我知道for循环不会使它慢很多,但那是因为n值的长度太小了。如果我增加n值的长度,它将开始影响处理时间。我已经更新了代码,这可能是一个更好的示例。嗯,因此您无法确定np.sum([Number\u array+Values[n]])
和np.sum(Number\u array)
?或者你的个人资料图像准确吗?哦,我明白你的意思,但是如果值的长度非常大,也会极大地影响性能。因为它在for循环中迭代。当然会影响性能,但是for循环会使其瓶颈。不管怎样,谢谢。循环是什么?再也没有了。哦,没关系,我以为追加列表
函数与结果
相同。很抱歉。
Appending_list = np.sum(Number_array) + Values * len(Number_array)