微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在具有共享比例的单个二维直方图矩阵中组合两个2D数据集

如何解决在具有共享比例的单个二维直方图矩阵中组合两个2D数据集

我有两个d1,d2数据集,其中填充了不同比例的2D数据。

import numpy as np
d1 = np.random.normal(-30,20,(500,2))
d2 = np.random.normal(-40,10,2))

此外,我还可以从每个单独的数据集中创建独立的100 x 100二维直方图(=灰度图像)。

bins = [100,100]
h1 = np.histogram2d(d1[:,0],d1[:,1],bins)[0]
h2 = np.histogram2d(d2[:,d2[:,bins)[0]

但是使用这种解决方案,每个2D直方图都以其自身平均值为中心,当将两个直方图绘制在彼此之上时,它们似乎分布在同一中心附近,这实际上是不正确的。

我想要得到的是一个100 x 100 x 2的historgam矩阵(相当于2通道图像),该矩阵考虑了数据的不同比例,因此不会丢失位移。

解决方法

如果您向histogram2d传递值bins=[100,100],则要求其自动计算每个维度中的100个bin。您可以自己做,所以这两个

bins = [
    np.linspace(x.min(),x.max(),100),np.linspace(y.min(),y.max(),100)
]
h1 = np.histogram2d(x,y,bins)

bins = [100,100]
h1 = np.histogram2d(x,bins)

等效。

认识到这一点,我们现在可以计算两个数组组合的bin范围,并使用它们

bins = [
    np.linspace(
        min(d1[:,0].min(),d2[:,0].min()),max(d1[:,0].max(),0].max()),100
    ),np.linspace(
        min(d1[:,1].min(),1].min()),1].max(),1].max()),100
    )
]
h1 = np.histogram2d(d1[:,0],d1[:,1],bins)
h2 = np.histogram2d(d2[:,bins)

或将两个数据集堆叠在一起,并简化代码

d = np.stack((d1,d2))

bins = [
    np.linspace(d[...,d[...,np.linspace(d[...,]

h1 = np.histogram2d(d[0,:,d[0,bins)
h2 = np.histogram2d(d[1,d[1,bins)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。