我正在使用Python分析数据,并且有N个2d数据数组的列表。我想一一查看这些元素,并将它们与其他N-1个元素的平均值进行比较。
Python中是否有内置方法可循环遍历列表,一方面具有单个元素,另一方面具有列表的其余部分。
我知道如何通过遍历整数并连接左右部分来做到``丑陋'':
for i in xrange(N):
my_element = my_list[i]
my_sublist = my_list[:i] + my_list[i+1:]
但是有Pythonista可以做到吗?
python大神给出的解决方案
我们可以计算所有元素的总和。然后,我们可以轻松地为每个元素找到其余元素的总和。我们从总和中减去当前元素的值,然后找到平均值,除以N - 1:
s = sum(my_list)
for my_element in my_list:
avg_of_others = (s - my_element) / float(len(my_list) - 1)
...
编辑:
这是一个如何将其扩展到numpy的示例:
import numpy as np
l = np.array([(1, 2), (1, 3)])
m = np.array([(3, 1), (2, 4)])
my_list = [l, m]
s = sum(my_list)
for my_element in my_list:
avg_of_others = (s - my_element) / float(len(my_list) - 1)