python - 将两个 numpy 掩码数组加在一起

标签 python numpy

有没有一种方便的方法可以将另一个具有实际值的数组添加到另一个数组中的屏蔽位置?

import numpy as np
arr1 = np.ma.array([0,1,0], mask=[True, False, True])
arr2 = np.ma.array([2,3,0], mask=[False, False, True])
arr1+arr2

Out[4]:
masked_array(data = [-- 4 --],
         mask = [ True False  True],
   fill_value = 999999)

注意:在 arr2 中,值 2 没有被屏蔽 -> 应该在结果数组中 结果应该是 [2, 4, --]。我想一定有一个简单的解决方案吗?

最佳答案

试试这个(从 http://docs.python.org/3/library/operator.html 中选择您要用于掩码的逻辑运算符)

>>> from operator import and_
>>> np.ma.array(arr1.data+arr2.data,mask=map(and_,arr1.mask,arr2.mask))
masked_array(data = [2 4 --],
             mask = [False False  True],
       fill_value = 999999)

在 Python 3 中,map() 返回的是迭代器而不是列表,因此需要添加 list():

>>> np.ma.array(arr1.data+arr2.data,mask=list(map(and_,arr1.mask,arr2.mask)))

关于python - 将两个 numpy 掩码数组加在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20539069/

相关文章:

python - datetime.strptime() 为 %Z 接受哪些可能的值?

c# - 从 Azure WebJob 运行 Python 脚本

python - 在 Windows 上安装 Python 3.6 的路径是什么?

python - 我正在寻找哪个随机数来实现这个 :

Python - 跨 CSV 中多列的 Numpy 搜索

python - 将稀疏数组从 numpy 读取到分块 dask 数组

numpy - 使用矢量化将函数应用于 Numpy 二维数组中的每一行

python - sympy ufuncify 中的参数限制

python - 嵌套数据到 csv python

python - 当我打乱一个 DataFrame 的副本时,为什么原始 DataFrame 也打乱了?