Python-使用numpy根据变量2生成变量1的条件平均值?

Python-使用numpy根据变量2生成变量1的条件平均值?,python,python-3.x,pandas,numpy,matplotlib,Python,Python 3.x,Pandas,Numpy,Matplotlib,我正在尝试绘制一些基本图,以便更好地了解数据中发生的情况。目前1有4个变量,每个变量有200*387个数据点。我将所有内容都存储在一个3D数组中,第三维表示与数据相关的不同变量 目前我已经制作了一些var1和var2的散点图。然而,我想在这个散点图的顶部添加一条条件平均曲线。这将是任何给定var2(x轴)值的平均var1(y轴)值。然而,我对Python还是一个新手,因此我非常确信,我目前考虑的方法在很大程度上不是最有效的 我目前的想法是,我可以对每个变量的数据进行矢量化(即,将其设为1D),然

我正在尝试绘制一些基本图,以便更好地了解数据中发生的情况。目前1有4个变量,每个变量有200*387个数据点。我将所有内容都存储在一个3D数组中,第三维表示与数据相关的不同变量

目前我已经制作了一些var1和var2的散点图。然而,我想在这个散点图的顶部添加一条条件平均曲线。这将是任何给定var2(x轴)值的平均var1(y轴)值。然而,我对Python还是一个新手,因此我非常确信,我目前考虑的方法在很大程度上不是最有效的

我目前的想法是,我可以对每个变量的数据进行矢量化(即,将其设为1D),然后创建一些大小合理的var2容器,然后找到每个容器的var1平均值。我将这些平均值存储在某个新的向量中,然后绘制它

这是一种非常愚蠢的做法吗?从我搜索的内容来看,熊猫可能有一个简单的方法来实现这一点,但考虑到Python对我来说是多么的陌生,我也不确定直接去找熊猫会不会有点过分


提前感谢您的回复

感谢您的回复。重新阅读我的问题,我意识到它的措辞相当糟糕,因此我对此表示歉意

我找到了我的解决方案,结果很简单。不需要使用pandas并将数据类型从数组更改为数据帧。我最终只是使用了scipy的函数。我的代码实际上只是:

import scipy as sp
n_bins = 80
cond_means, bin_edges, binnumber = sp.stats.binned_statistics(var2, var1, statistic='mean', bins=n_bins)
其中var2是独立(x轴)变量,var1是从属(y轴)变量

对于有兴趣将其用于条件平均图的任何人,请注意binned_统计提供的是bin边,而不是bin均值。这意味着您将始终比cond_means元素多一个bin_edges元素。解决此问题的简单方法是:

bin_width = bin_edges[1] - bin_edges[0]
bin_centres = bin_edges[1:] - bin_width/2
现在,您应该能够简单地将条件平均值绘制为:

import matplotlib.pyplot as plt
fig1 = plt.figure()
plt.scatter(var2, var1, color = 'blue', label = 'raw data')
plt.plot(bin_centres, cond_means, color = 'black', label = 'Conditional mean')
plt.legend()
plt.xlabel('var2')
plt.ylabel('var1')
plt.show()

我不清楚你到底想达到什么目的。也许一个具体的例子会有所帮助,最好是作为可以复制的代码。关于你的熊猫问题——使用熊猫真的不过分。它比Numpy(并以此为基础)对初学者更友好。它可以帮助你,例如,给你的变量命名,并在2D多索引而不是3D数组中设置它们,这可以大大简化你的工作。也许这可以帮助你,你需要的是一个MCVE。我们可以修复坏代码。我们无法修复模糊的描述。不要道歉。修理