分配给蒙版数组应该是为了清除蒙版。这在一维数组中可以,但在多维数组中不行。我可以通过将数组展平到一个维度或者显式地指定掩码(如下所示)来解决这个问题,但是看起来我不需要做这两件事。我做错了吗?你知道吗
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
执行
marray2[2][2] = 2
操作时,第一个[2]
实际上返回数组第三行的副本,而不是对marray2
中的行的引用,因此您正在操作副本,而不影响marray2
。你知道吗与列表和元组不同,numpy数组支持多维数组的多维索引。试着用
marray2[2,2] = 2
替换marray2[2][2] = 2
,我相信你会得到你期望的结果。你知道吗相关问题 更多 >
编程相关推荐