如何对for循环中每次生成的numpy数组求平均值?
解决方法
有两种常用方式可以计算循环中生成的numpy数组的平均值,根据你的内存情况选择即可:
方式一:收集所有数组后统一计算
先把每次迭代生成的数组存入列表,最后转成numpy多维数组后沿迭代维度求平均,这种方法直观易懂,适合数组体积不大的场景:
import numpy as np arr_list = [] for i in range(5): array_that_I_calculate = some_calculation(x,y,z) arr_list.append(array_that_I_calculate) # 将列表转为多维numpy数组(维度取决于单个数组的形状) all_arrays = np.array(arr_list) # 沿第0个维度(迭代次数的维度)计算平均值 average_array = np.mean(all_arrays, axis=0)
方式二:边迭代边累加,最后求平均
如果每次生成的数组体积很大,不想占用额外内存存储所有数组,可以直接累加求和,最后除以迭代次数:
import numpy as np total = None iter_count = 5 for i in range(iter_count): current_arr = some_calculation(x,y,z) if total is None: # 第一次迭代时初始化累加数组 total = current_arr.copy() else: total += current_arr average_array = total / iter_count
注意:必须保证每次some_calculation返回的数组形状完全一致,否则会触发numpy维度不匹配的错误。
内容的提问来源于stack exchange,提问作者user18462847
相关产品推荐
相关产品推荐

