为多维蒙版数组赋值不会清除掩码?

时间:2015-04-16 21:45:58

标签: python arrays numpy

分配给蒙版数组应该清除蒙版。这在一维数组中对我有效,但在多维数组中不起作用。我可以通过将数组展平为单个维度或明确指定掩码(如下所示)来解决此问题,但似乎我不应该做其中任何一个。我做错了吗?

import numpy
marray = numpy.ma.masked_all(3)
marray
marray.hardmask
marray.data
marray.mask
marray[2] = 2
marray

marray2 = numpy.ma.masked_all((3,3))
marray2
marray2.hardmask
marray2.data
marray2.mask
marray2[2][2] = 2
marray2
marray2.data
marray2.mask
marray2.mask[2][2] = False
marray2

1 个答案:

答案 0 :(得分:1)

执行marray2[2][2] = 2时,第一个[2]实际上是返回数组第3行的副本,而不是对{{1}中的行的引用},所以你操纵副本而不影响marray2

与列表和元组不同,numpy数组支持多维数组的多维索引。尝试用marray2替换marray2[2][2] = 2,我相信您会得到您期望的结果。