numpy中x,y滚动窗口z维的平均相关

2024-10-01 02:19:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我想写一些代码来帮助我评估一些配合有多好。我有一个3D矩阵。z维是对矩阵i,j点的一些数据的拟合。我想通过比较I,j点的拟合与其最近邻的拟合(在x,y维)来评估这种拟合是否良好。如果邻居们的健康状况与当时的状况相似,那么我希望保持健康。我希望这有道理。在

归根结底是:有没有一个好方法可以在x,y维上有一个滚动窗口,它计算窗口中心点z维上的皮尔逊r,然后取平均值(甚至是r大于某个常数的点数)。在

我现在只能考虑如何以一种长期的低效的方式来做这件事。对于一些背景信息,我用傅立叶级数拟合这些数据。最后,我想用这项技术来评估每一点傅里叶拟合中使用的最小波数。在

提前谢谢 尼尔


Tags: 数据方法代码信息方式常数矩阵平均值
1条回答
网友
1楼 · 发布于 2024-10-01 02:19:04

这是我的解决办法,但效率不高。(顺便说一句,这是另一个数据维度,我在问题中没有告诉你。有人有什么更有效的方法吗?在

再次感谢

import numpy as np
from scipy.stats import pearsonr
from bottleneck import nanmean

def calc_corr_of_neighbours(data, win_shape):
    rs = np.empty(data.shape[1:])
    thisrs = np.empty(win_shape)
    win_data = np.empty(win_shape)
    dA = int(win_shape[0]/2)
    dB = int(win_shape[1]/2)
    maxA = data.shape[2]
    maxB = data.shape[3]

    for i in np.ndindex(rs.shape):
        stA = max(i[1]-dA, 0)
        endA = min(i[1]+dA, maxA)
        stB = max(i[2]-dB, 0)
        endB = min(i[2]+dB, maxB)

        win_data = data[:, i[0], stA:endA, stB:endB]

        thisrs.fill(np.NaN)
        for j in np.ndindex(win_data.shape[1:]):
            thisrs[j] = pearsonr(data[:, i[0], i[1], i[2]], win_data[:, j[0], j[1]])[0]

        rs[i] = nanmean(thisrs)

    return rs

相关问题 更多 >