numpy 二维直方图的标准偏差

Standard deviation from numpy 2d histogram

在给定一系列二维坐标以及每个坐标的加权值的情况下,是否有一种方法可以使用 numpy histrogram2d 方法确定每个 bin 中的标准偏差?

不确定你在问什么,你能post你的代码吗?

我通常在历史绘图垂直线上绘制 std,如下所示:

plt.axvline(x=np.mean(data)-np.std(data), ls = "--", color='#2ca02c', alpha=0.7)
plt.axvline(x=np.mean(data)+np.std(data), ls = "--", color='#2ca02c', alpha=0.7)

其中 "data" 是一个包含所有值的字典

直接 使用 numpy 的 histrogram2d 是不可能的,但是使用 scipy.stats.binned_statistic_2d 可以很容易地完成。

from scipy import stats

x = np.random.rand(10000)
y = np.random.rand(10000)
z = np.random.rand(10000)
binx = np.linspace(0,x.max(), 100)
biny = np.linspace(0,y.max(), 100)
hist = stats.binned_statistic_2d(x, y, z, statistic='std', bins=[binx, biny])
plot_x, plot_y = np.meshgrid(binx, biny)

fig, ax = plt.subplots(figsize=(5,5))
pc = ax.pcolormesh(plot_x, plot_y, hist[0].T, cmap="inferno")
ax.set_aspect('equal')
cbar=fig.colorbar(pc,shrink=0.725)
fig.tight_layout()

statistic 选项也可以采用不同的东西,如 meanmedian 或用户定义的函数,请参阅 documentation 了解更多详细信息。