问题标签 [masked-array]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
386 浏览

python - 如何获取 NumPy 掩码数组的最后一个非零值?

我正在做一个模型。结果存储在 NetCFD 文件中,每个粒子的 lon、lat 和 time 的掩码数据。我想获得每个粒子的 lon、lat、时间的最后一个真实值。我设法获得了最后一个实数的位置,但没有获得值本身。

你有什么建议吗?

我的代码如下所示:

0 投票
1 回答
4556 浏览

python - 为什么 Numpy 掩码数组有用?

我一直在阅读掩码数组文档,但我很困惑 - MaskedArray 与仅维护一个值数组和一个布尔掩码有什么不同?有人可以给我一个示例,其中 MaskedArrays 更方便或性能更高吗?

更新 6/5

为了更具体地说明我的问题,这是一个如何使用 MaskedArray 的经典示例:

我也可以这样轻松地做同样的事情:

我想 MaskedArray 版本看起来更好一些,如果你需要一个可重用的数组,可以避免复制。从标准 ndarray 转换为 MaskedArray 时,它不会使用同样多的内存吗?并且在将掩码应用于数据时是否避免了引擎盖下的副本?还有其他优点吗?

0 投票
2 回答
6601 浏览

python - 在 numpy masked_array 中用 nan 替换 masked

我想将masked结果替换为nan. 有没有办法直接用 numpy's 做到这一点masked_array

0 投票
1 回答
781 浏览

python - 在 3 通道数组上创建 numpy 掩码数组永远不会奏效

我有一个 3 通道 numpy 数组,即一个图像,我想屏蔽一些区域,然后计算未屏蔽区域的平均值。当我将我的 numpy 数组转换为掩码的 numpy 数组时,我总是收到以下错误:

raise MaskError(msg % (nd, nm))
numpy.ma.core.MaskError: Mask and data not compatible: data size is 325080, mask size is 108360.

我的数组(图像)形状是:(301, 360, 3)供参考。我通过创建一个重复的零数组来创建我的掩码,然后1在掩码上绘制一个 's (True) 的多边形形状。

我的代码是:

我做错了什么,如何修复它以在 numpy 中成功创建屏蔽数组?

0 投票
0 回答
25 浏览

numpy - 避免将掩码数组元素格式化为“0.00”

我在 numpy 中有一个掩码数组:

现在我想在图中显示数字,所以我需要格式化:

为什么被屏蔽的元素被格式化为“0.00”,我怎样才能避免这种情况,例如通过将被屏蔽的元素格式化为 NaN 或一些任意字符?

0 投票
2 回答
711 浏览

python - 在布尔掩码 NumPy 数组上追溯 argmin/argmax 的原始位置 - Python

语境

由于使用numpy.ma-module 进行屏蔽比直接布尔屏蔽要慢得多,因此我必须使用后者进行argmin/ argmax-计算。

一个小对比:

无论如何,使用argmin/argmax返回数组中第一次出现的索引。在布尔掩码的情况下,这意味着索引在arr2[mask]and not内arr2。还有我的问题:我需要未屏蔽数组中的索引,同时在屏蔽数组上计算它


问题

即使我将它应用于布尔掩码版本,如何获得未掩码的argmin/ argmax-index ?arr2arr2[mask]

0 投票
2 回答
217 浏览

python - 有没有办法忽略用于屏蔽单独数组的数组中的屏蔽值?

我的数据是几个长度相同的数据数组。我正在屏蔽一个数组(y),然后使用该屏蔽数组来屏蔽第二个数组(x)。我屏蔽 x 以消除指示设备错误 (-9999) 的值。然后我使用 np.where() 找出 y 低的位置(低于平均值 1 个标准偏差)来掩盖 x,以便在 y 低时查看 x 的值。

我已经尝试多次更改我的掩码,但其他 numpy 掩码数组操作都没有给我不同的结果。当掩码 = FALSE 时,我尝试编写一个逻辑语句来给我值,但我不能在 np.where() 语句中这样做。

当我们调用 x_masked 时,它返回:

我们期望 x_masked 的平均值为 0.5( (0 + 1)/2 ),但平均值为 3,因为 x_masked 中包含了掩码的 -9999 值(2 和 9)。

有没有办法排除屏蔽值以便只获取未屏蔽值?

0 投票
0 回答
22 浏览

python - Numpy:无法从 MaskedArray 获取正确的数据

从掩码数组中提取数据时,我没想到会出现以下行为。

我有以下 MaskedArray:

我期待以下结果:

但我得到了:

0 投票
1 回答
39 浏览

python - 从 3D numpy.MaskedArray 中删除切片

我有一个 3D numpy.MaskedArray,我想删除第三个切片。如果我是一个 numpy.array 我可以只使用该numpy.delete函数,例如 np.delete(arr, obj=3, axis=0). 但是,此功能不适用于np.MaskedArrays. 如何在不更改数组类型的情况下以 pythonic 方式执行此操作?

0 投票
3 回答
239 浏览

python - 有效检查数据是否被屏蔽数组和所有数据都被屏蔽 True

我有简单的数组,numpy.ndarrays而其他时候相同的变量可能是一个掩码数组。我想找出最有效的方法来检查数组中是否有数据并且所有数据都没有被屏蔽

我有以下说明:

但这允许所有 3 个通过。我假设因为 amasked_array被认为是ndarray

if statement passed data0 if statement passed data1 if statement passed data2

我想让 data0 和 data2 通过,这样我就可以对数据进行操作。理想情况下它也很简单:)