相关疑难解决方法(0)

如何将掩码从一个数组应用到另一个数组?

我现在已经多次读过蒙面数组文档,到处搜索并感到非常愚蠢.我无法弄清楚我的生活如何将面具从一个阵列应用到另一个阵列.

例:

import numpy as np

y = np.array([2,1,5,2])          # y axis
x = np.array([1,2,3,4])          # x axis
m = np.ma.masked_where(y>2, y)   # filter out values larger than 5
print m
[2 1 -- 2]
print np.ma.compressed(m)
[2 1 2]
Run Code Online (Sandbox Code Playgroud)

所以这很好....但要绘制这个y轴,我需要一个匹配的x轴.如何将y数组中的掩码应用于x数组?这样的事情会有意义,但会产生垃圾:

new_x = x[m.mask].copy()
new_x
array([5])
Run Code Online (Sandbox Code Playgroud)

那么,究竟是怎么做的(注意新的x数组需要是一个新的数组).

编辑:

好吧,似乎有一种方法可以做到这一点:

>>> import numpy as np
>>> x = np.array([1,2,3,4])
>>> y = np.array([2,1,5,2])
>>> m = np.ma.masked_where(y>2, y)
>>> new_x = np.ma.masked_array(x, m.mask)
>>> print np.ma.compressed(new_x)
[1 2 4]
Run Code Online (Sandbox Code Playgroud)

但那令人难以置信的凌乱!我正在努力寻找像IDL一样优雅的解决方案......

python numpy

28
推荐指数
2
解决办法
4万
查看次数

具有缺失数据的 numpy 数组的局部均值滤波器

我想对存储为 numpy 数组的图像进行局部平均滤波器。图像在边缘附近有一些缺失的像素,用有效的掩码(布尔数组)表示。

我可以使用skimage.filters.rank,但我的图像超出了[-1, 1]范围,出于某种原因,scikit-image 要求这样做。

还有astropy.convolution,但它会插入缺失的数据。对于简单的均值,无需进行插值。仅平均有效像素。输入和输出有效掩码相同。

简单地将无效像素设置为零不是一种选择,因为它会污染附近的有效像素平均值。

还有这个 question,但它不是重复的,因为它询问更通用的卷积(这只是平均)。

python numpy convolution scipy scikit-image

5
推荐指数
1
解决办法
1216
查看次数

标签 统计

numpy ×2

python ×2

convolution ×1

scikit-image ×1

scipy ×1