Python Numpy-用平均重磨重磨
我正在尝试实现一些类似于python中关于重新填充的内容。那篇文章中的问题涉及到重新填充数组,这样一个输出单元格将包含所有对它有贡献的输入单元格的平均值。问题是每个输入单元(我认为)只对一个输出单元起作用——也就是说,没有真正的方法来解释一个输入单元与两个输出单元重叠的情况 我想知道是否有一种方法可以推广该方法来解释单元重叠-例如,如果我有两个输入单元,范围从0到1和1到2,以及一个输出单元,范围从0.75到2,我想用某种加权平均值来计算输出单元格中的值,它识别出跨越1到2的输入单元格对输出单元格的贡献大约是跨越0到1的输入单元格的4倍Python Numpy-用平均重磨重磨,python,numpy,average,weighted-average,Python,Numpy,Average,Weighted Average,我正在尝试实现一些类似于python中关于重新填充的内容。那篇文章中的问题涉及到重新填充数组,这样一个输出单元格将包含所有对它有贡献的输入单元格的平均值。问题是每个输入单元(我认为)只对一个输出单元起作用——也就是说,没有真正的方法来解释一个输入单元与两个输出单元重叠的情况 我想知道是否有一种方法可以推广该方法来解释单元重叠-例如,如果我有两个输入单元,范围从0到1和1到2,以及一个输出单元,范围从0.75到2,我想用某种加权平均值来计算输出单元格中的值,它识别出跨越1到2的输入单元格对输出单元
这本身并不是插值,但我见过的几乎所有尝试做类似事情的方法都使用它。使用np.interp等直接向上插值的问题在于,如果一个输出单元格中有多个输入单元格,则此例程只会忽略一些点。我不太确定您在寻找什么,但我现在正在做类似的工作。我有两个统一的有限差分网格,我需要将信息从一个映射到另一个,然后再映射回来。这个代码适合我的需要。这个函数x_to_x创建了一个矩阵M,这样我就可以将M的点积与网格a上的数据相乘,并在网格b上生成数据
def x_to_x(xa, da, xb, db):
a = np.tile(xa, (np.size(xb), 1))
b = np.tile(xb, (np.size(xa), 1)).T
a_l = a - da / 2
a_r = a + da / 2
b_l = b - db / 2
b_r = b + db / 2
x_l = np.maximum(a_l, b_l)
x_r = np.minimum(a_r, b_r)
return np.maximum(x_r - x_l, 0.) / db
如果你有一个非均匀网格,da和db可以从标量调整为类似的东西,例如,da=np.hstack(a[1:]-a[:-1],a[-1]-a[-2])