问题标签 [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 回答
622 浏览

python - numpy digitize 中的掩码值

我希望numpy digitize忽略我数组中的一些值。为了实现这一点,我将不需要的值替换为NaN并掩盖了这些NaN值:

尽管如此np.digitize ,将掩码值抛出为-1. 是否有替代方法可以np.digitize忽略屏蔽值(或NaN)?

0 投票
0 回答
127 浏览

python - numpy set_printoptions 不适用于 numpy.ma 数组

我正在使用带掩码的 numpy 数组,并尝试以一种很好的方式将它们打印出来以进行调试。我将打印选项设置如下,但输出不是我所期望的。

输出:

掩码数组不会打印到 3dp。numpy.ma 中是否缺少此功能?如果有人知道解决方法(没有编写我自己的打印功能),将不胜感激!

0 投票
1 回答
679 浏览

python - netcdf4 _FillValue、missing_value 和 python 掩码数组 fill_value 之间的区别

我有 netcdf 文件,其中 _FillValue 和/或缺失值以各种组合设置(例如作为浮点数、字符串或根本不设置,通常为 -999./'-999' )。我正在操作这些文件并再次保存它们,并希望在我的输出文件中正确且一致地设置填充值。我的问题是:

1)使用_FillValue,或missing_value,或两者兼而有之,有什么区别?

2)填充值应该是哪种类型,关于值的最佳实践是什么?-999 似乎可能与实际数据混淆

3) netdcf 填充值如何与我的掩码数组中的 fill_value 组合(似乎默认为 10^20)?似乎有两种方法可以纠正同一件事。

4)我在处理数据时也收到警告:“用户警告:警告:未使用缺失值,因为它不能安全地转换为可变数据类型”,并且 _FillValue 自动设置为大约 10 ^ 36。所以我认为我的 -999 缺失值确实是个坏主意。

我正在使用 python 3.7 和 netcdf4。

谢谢!

0 投票
2 回答
223 浏览

python - jupyter中的`np.ma.array`问题中的屏蔽`np.nan`

让我们在 Anaconda Jupyter 中运行 Python3 NumPy 代码:

我们有警告:/.../anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:2: RuntimeWarning: invalid value encountered in less

np.nan用etc代替1.0--- 没有警告。

为什么np.nan不能被屏蔽再比较?

0 投票
1 回答
58 浏览

python - 想要在数据被屏蔽时创建一个零数组,在数据未被屏蔽时创建一个数组

我有被屏蔽的 netcdf 数据。数据在(时间,纬度,经度)。我想制作一个与原始数据大小相同的数组,但当数据被屏蔽时为零,而数据未被屏蔽时为零。所以票价我试图使这个功能:

但这只会返回一个包含 1 且没有 0 的数组,即使数据中有掩码值。如果您对如何提高代码效率有任何建议,我也会很高兴。谢谢,

0 投票
0 回答
20 浏览

python - 用相同数据集的先前值替换掩码数据

我正在努力在一个大型(4GB)netcdf 数据文件(3 个维度:时间、经度和纬度)中填充缺失的数据。该方法是使用以下方式填充 data1 中的屏蔽值:

1) 来自 data1 的先前值或

2) 如果从 data1 中找到的值 < 从 data2 中找到的值,则使用来自另一个(也是屏蔽数据集,data2)的数据。

到目前为止,我已经尝试了几件事,其中之一是制作一个非常复杂的脚本,其中包含很长的 for 循环,在 24 小时后从未完成运行。我试图减少它,但我认为它仍然非常复杂。我相信有一个比我现在做的方式更简单的程序来做这件事,我只是不知道怎么做。

我制作了一个脚本,首先将屏蔽数据替换为零,以便使用该函数np.where获取屏蔽数据的索引(我没有找到返回屏蔽数据坐标的函数,所以这是我的工作) . 我的问题是我的代码很长,我认为运行大型数据集很耗时。我相信有一种更简单的方法可以做到这一点,但我还没有找到围绕它的其他工作。这是我目前所拥有的: : (第一部分只是生成一些易于使用的矩阵):

我定义在主脚本中调用的函数是这些,它们的使用顺序相同:

希望有人对如何改进我的代码有一个好主意或建议。我仍然在努力理解 python 中的索引,我认为这肯定可以比我在这里做的更顺利。感谢您的任何建议或意见,

0 投票
1 回答
435 浏览

python - 蒙版的 RGB 图像不会显示为 imshow 蒙版

我注意到显示 RGB 蒙版图像不像我预期的那样工作,即结果图像在显示时没有被蒙版。正常吗,有解决办法吗?

下面的示例显示了观察到的行为:

在此处输入图像描述

有趣的是,当鼠标经过蒙版 RBG 图像中的蒙版像素时,像素值不会出现在图形窗口的右下角。

0 投票
1 回答
149 浏览

python - 如果每个元素都被屏蔽,如何让 np.ma.argmin 返回 None?

动机:在数值列表中,我尝试找到最小值的索引 - 附带条件,该值必须低于某个阈值。这是一个一切都按预期工作的示例

这是一个np.ma.argmin发生意外的情况:

为什么会这样,我怎样才能让它返回None?注意:设置fill_value = None没有帮助。

0 投票
3 回答
1233 浏览

python - Python:使用 scipy curve_fit 将曲线拟合到屏蔽数据

我正在尝试使用 python/numpy/scipy 编写一个脚本,用于数据操作、拟合和绘制与角度相关的磁阻测量。我是 Python 新手,从我的博士生导师那里得到了框架代码,并设法在框架中添加了几百行代码。过了一会儿,我注意到一些测量有多个错误,并且由于脚本应该自动完成所有操作,我尝试屏蔽这些点并将曲线拟合到未屏蔽的点(曲线是叠加在线性函数上的正弦平方,所以 numpy.ma.polyfit 并不是一个真正的选择)。但是,在屏蔽了问题点的 x 和 y 坐标后,拟合仍会考虑它们,即使它们不会显示在图中。这个例子被简化了,但同样的事情正在发生;

后半部分的点被掩盖了,没有显示在图中,但仍被考虑在内。

在写这篇文章时,我发现我可以做到这一点:

我真正想要的

我想 scipy curve_fit 并不是要处理蒙面数组,但我仍然想知道是否有任何解决方法(我需要使用蒙面数组,因为数据点的数量> 10e6,但我m 一次只绘制 100,因此我需要获取我想要绘制的数组部分的掩码并将其分配给另一个数组,同时将数组的值复制到另一个数组或将原始掩码设置为 False) ? 感谢您的任何建议

0 投票
1 回答
57 浏览

arrays - 如何组合两个 3D 阵列的蒙版并将其应用于单独的 3D 阵列?

我有两个形状为 (4880,129,135) 的 3D 蒙版阵列。假设数组是 A 和 B,掩码 m1 和 m2 包含相应数组的布尔值。我需要创建一个新的掩码 m3,如果 m1 或 m2 中的任何一个为 False,则 m3 包含 True 表示 m1 和 m2 中的 True 值,以及 False 表示 False 值。然后将其应用于数组 C。