python - 如何追加屏蔽数组

标签 python numpy

我有两个数组,我想将它们附加到一个新数组中,但我需要保留屏蔽信息。我尝试了 numpy.append(),但它丢失了屏蔽信息。

>>> maska
masked_array(data = [-- 1 3 2 1 -- -- 3 6],
     mask = [ True False False False False  True  True False False],
     fill_value = 0)

>>> b
masked_array(data = [-- 1 3 2],
     mask = [ True False False False], fill_value = 0)

>>> np.append(maska,b)
masked_array(data = [0 1 3 2 1 0 0 3 6 0 1 3 2],
     mask = False, fill_value = 999999)

最佳答案

这确实很奇怪,连 np.ma.hstack 都不起作用,但是你可以通过手动组合掩码来实现你需要的:

In [1]: import numpy as np

In [2]: def masked_hstack(tup):
   ...:     return np.ma.masked_array(np.hstack(tup),
   ...:            mask=np.hstack([arr.mask for arr in tup]))
   ...:

In [3]: a, b = [0, 1, 3, 2, 1, 0, 0, 3, 6], [0, 1, 3, 2]

In [4]: maska, maskb = [np.ma.masked_equal(arr, 0) for arr in a, b]

In [5]: masked_hstack((maska, maskb))
Out[5]:
masked_array(data = [-- 1 3 2 1 -- -- 3 6 -- 1 3 2],
             mask = [ True False False False False  True  True False False  True False False
 False],
       fill_value = 999999)

如果重要的话,您还可以将 fill_value 覆盖为 0

关于python - 如何追加屏蔽数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23301231/

相关文章:

.net - 有没有人设法使用 Iron Python 安装 Python 模块?

python - 如何在 beautifultsoup 中处理多个 URL 并将数据转换为 DataFrame?

python - 考虑到数据分布,离散化 Pandas 的列

python - None 和 <无值> 之间的区别

python - 将稀疏 scipy 矩阵切片以每 10 行和 10 列进行子采​​样

python - 如何将数组复制/重复 N 次到新数组中?

Python 基本输入困惑

python - 通过任务计划程序或代码在需要时运行来安排 python 脚本更好吗?

python - pandas 字符串列的交集/子集

python - 根据多列的条件选择行