分配给蒙版数组应该清除蒙版。这在一维数组中对我有效,但在多维数组中不起作用。我可以通过将数组展平为单个维度或明确指定掩码(如下所示)来解决此问题,但似乎我不应该做其中任何一个。我做错了吗?
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
答案 0 :(得分:1)
执行marray2[2][2] = 2
时,第一个[2]
实际上是返回数组第3行的副本,而不是对{{1}中的行的引用},所以你操纵副本而不影响marray2
。
与列表和元组不同,numpy数组支持多维数组的多维索引。尝试用marray2
替换marray2[2][2] = 2
,我相信您会得到您期望的结果。