有一维值数组:
arr0 = numpy.array([8,0,9,5])
还有另一个形状为(len(arr0),3)
的二维数组:
arr1 = numpy.array([9,5,6],
[2,7,4],
[6,7,8],
[1,8,3])
我想创建一个arr1
的蒙面数组,其arr1[i]
掩盖了arr0[i] == 0
:
Result arr2 = [[9,5,6],
[-,-,-],
[6,7,8],
[1,8,3]]
创建这个新的蒙面数组的优雅方法是什么?
我知道我可以使用形状(len(arr0),3)
的面具创建它。我希望我可以使用仅(len(arr0))
的形状的面具来创建它。
答案 0 :(得分:1)
如果您执行以下操作,您的掩码可以由bool数组arr0 == 0
设置:
In [1]: arr1 = numpy.ma.masked_array(arr1)
In [2]: arr1[arr0 == 0] = numpy.ma.masked
In [3]: print arr1
[[9 5 6]
[-- -- --]
[6 7 8]
[1 8 3]]
(顺便说一下,你的arr1定义需要一组额外的括号。)