Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用numpython提高迭代函数的性能_Python_Arrays_Numpy_For Loop_Sum - Fatal编程技术网

使用numpython提高迭代函数的性能

使用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_

是否有一种方法可以在纯numpy上运行下面的函数,因此我正在尝试摆脱for循环。我试图减少代码的运行时间<代码>数字数组与每个
值元素一起添加并求和。每次迭代后,总和被追加到追加列表中。
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)