我正在使用matplotlib来分析大型数据集。我现在拥有的是x,y点的分布。我想找出我的函数的x值相同但y的差异最大的情况。因此,如果我绘制它,案例的一部分位于我的图的顶部,另一部分是图的底部。
那我怎么得到点(x,y),(x,y')其中f(x)= y和f(x)= y'和y-y'= max?
欢呼声
答案 0 :(得分:1)
我认为你想要的是一个方差图。为不同的x值创建字典。将每个不同的y值放在与每个x关联的列表中。找到与每个x相关的列表的stdev(np.std)说“s”。绘制s与x的对比。
答案 1 :(得分:1)
不确定我是否理解正确,但这是一个可以适应的原始解决方案:
from collections import defaultdict
input = [(1.2,2), (1.2, 6), (1.2, -2), (2,8), (2,7), (2,18)]
indices_dict = defaultdict(lambda: list([[], []]))
for idx, val in enumerate(input):
indices_dict[val[0]][0].append(idx)
indices_dict[val[0]][1].append(val[1])
for key in indices_dict:
y_values = indices_dict[key][1]
idx_values = indices_dict[key][0]
max_idx = idx_values[y_values.index(max(y_values))]
min_idx = idx_values[y_values.index(min(y_values))]
print 'Max diff for x=%s is found between points %s and %s' %(key, input[min_idx], input[max_idx])
这应该为每个不同的x打印y上具有最大差异的点。您可以根据自己的要求进行调整。