我想在python中为以下行创建一个循环(我使用pycharm):
mean_diff = np.mean(np.array([diff_list[0].values, diff_list[1].values, diff_list[2].values, diff_list[3].values,...,diff_list[100], axis=0)
用这个我得到不同阵列中每个单独单元格的平均值(光栅随时间变化)
我尝试了以下内容:
for x in range(100):
mean_diff = np.mean(np.array([diff_list[x].values]), axis=0)
但是这里发生的事情是,它将开始计算最后一次迭代的平均值与新数组之间的平均值,依此类推,而不是首先添加所有内容,然后计算总数的平均值。一个想法是首先创建一个“sumarray”,其中包含所有diff_list值,但我也没有这样做。我的diff_list的原始类型是一个包含数据框的列表(对于每一行它有一个数组,所以它是一个3d数组/数据框(??)... - >参见图片:image shows the structure of the list )。
答案 0 :(得分:0)
您需要在循环内填充数组,而不是进行计算。 Python列表推导是完美的:
您的第一个程序相当于:
mean_diff = np.mean(np.array([a.values for a in diff_list[:101]], axis=0))
或者如果您愿意:
x = []
for a in diff_list[:101]:
x.append(a.values)
mean_diff = np.mean(np.array(x, axis=0))
如果您使用整个列表而不是前101个元素,则可以删除“[:101]”。