Scipy gaussian_kde不允许为2D数组中的值设置不同的权重

问题描述

我正在尝试使用scipy.stats.gaussian_kde模块绘制2D矩阵的高斯核。我还希望超出我感兴趣范围的值(与矩阵中的空容器关联并分布在矩阵中的随机位置)在内核中权重为0,否则当我显示2d色图时会产生问题np.imshow的内核。该模块允许使用权重数组来归因于您输入数组中的值。但是,如果我构建的权重矩阵的形状和大小与输入矩阵相同,则gaussian_kde不喜欢它: ...

    ValueError: `weights` input should be one-dimensional.

... 如果我展平权重数组,那仍然是一个错误:现在权重比输入矩阵的长度(即行数)长 ...

    ValueError: `weights` input should be of length n

... 是否有解决此问题的方法

编辑:我为上下文提供了更多玩具数据: ...

    array=np.array([[1,2],[4,5]])
    #let's say I want odd numbers to have weight=0 and even numbers    to have weight=1
    weights=np.zeros((2,2))
    for i in range(array.shape[0]):
        for j in range(array.shape[1]):
            if avg_matrix[i,j] % 2 == 0:
                weights[i,j]=0
            else:
                weights[i,j]=1

... 现在权重矩阵合适了;问题是,如果我尝试制作加权内核: ...

kernel=stats.gaussian_kde(array,weights=weights)

... 西皮拒绝。但是如果我用 ...

weights=weights.flatten() 

...
它说权重的长度现在是4,而数组的长度是2。 我不能只使用权重的第一行,因为每一行对于不同的权重都有不同的位置(这是一个非常基本的示例,但是对于我的数据来说是相同的概念)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)