从2D坐标列表和第三个变量(速度),我创建了一个覆盖整个采样区域的2D numpy数组.我的目的是创建一个图像,其中每个像素包含其中的点的平均速度.之后用高斯滤波器过滤该图像.
问题是该区域未被均匀采样.因此,我Nan在图像中间有几个没有信息()的像素.当我尝试通过高斯滤波器过滤数组时,Nan传播会破坏整个图像.
我需要过滤此图像,但拒绝所有没有信息的像素.换句话说,如果像素不包含信息,则不应将其考虑用于过滤.
以下是我的平均代码示例:
Mean_V = np.zeros([len(x_bins), len(y_bins)])
for i, x_bin in enumerate(x_bins[:-1]):
bin_x = (x > x_bins[i]) & (x <= x_bins[i+1])
for j, y_bin in enumerate(y_bins[:-1]):
bin_xy = (y[bin_x] > y_bins[j]) & (y[bin_x] <= y_bins[j+1])
if (sum(x > 0 for x in bin_xy) > 0) :
Mean_V[i,j]=np.mean(V[bin_x][bin_xy])
else:
Mean_V[i,j]=np.nan
Run Code Online (Sandbox Code Playgroud)
编辑:
网上冲浪我已经结束了我在2013年提出的这个问题.这个问题的解决方案可以在astropy库中找到:
http://docs.astropy.org/en/stable/convolution/
Astropy的卷积用来自邻居的内核加权插值替换NaN像素.
谢谢大家!