python - 为多维掩码数组赋值不会清除掩码?

标签 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

最佳答案

当您执行marray2[2][2] = 2时,第一个[2]实际上返回第三个副本数组的行,而不是对 marray2 内的行的引用,因此您正在操作副本而不影响 marray2

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

关于python - 为多维掩码数组赋值不会清除掩码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29686547/

相关文章:

python - 对 selenium 中的元素执行重复单击

java - 从数组中显示的下一项而不是预期值

c - 初始化多维数组中的一个值是否会初始化数组的其余部分?

java - 检查二维数组中的越界

python - numpy:将任意函数应用于数组元素

python - 在 tensorflow 中实现简单的线性代数运算

python - 如何重新排序列表?

python - 使用 scipy.stats 拟合非标准化分布

python - F2PY 无法看到模块范围变量

python - 在 Kivy 中通过 if 条件更改屏幕似乎不起作用