gpt4 book ai didi

numpy - 硬掩码和软掩码 numpy 数组有什么区别?

转载 作者:行者123 更新时间:2023-12-05 04:38:24 25 4
gpt4 key购买 nike

我一直在浏览有关屏蔽数组的 numpy 文档(我非常喜欢并经常使用)并找到了 numpy.ma.harden_masknumpy.ma.soften_mask这会影响 MaskedArray.hardmask属性,但我找不到该属性用途的解释。

因此:硬掩码和软掩码 numpy 数组之间有什么区别?

最佳答案

@hpaulj 写道 ma 模块是用 Python 实现的,我查看了源代码并确实找到了答案:

The numpy.ma implementation has a "hardmask" feature,which prevents values from ever being unmasked by assigning a value.This would be an internal array flag, named something like'arr.flags.hardmask'.

If the hardmask feature is implemented, boolean indexing couldreturn a hardmasked array instead of a flattened array with thearbitrary choice of C-ordering as it currently does. While thisimproves the abstraction of the array significantly, it is nota compatible change.

hardmask 属性的以下文档可以在我在 maskedarray.baseclass.rst 的旧 checkout 中找到,但它在更新后消失了,这解释了它丢失的原因在网站上:

Returns whether the mask is hard (True) or soft (False).When the mask is hard, masked entries cannot be unmasked.

(我会发一个PR,建议把这句话恢复和扩展为“.. by element assigment”。)

这是一个演示环节:

>>> import numpy
>>> x = numpy.arange(10)
>>> m = numpy.ma.masked_array(x, x>5)
>>> assert not m.hardmask
>>> m[8] = 42
>>> m
masked_array(data=[0, 1, 2, 3, 4, 5, --, --, 42, --],
mask=[False, False, False, False, False, False, True, True,
False, True],
fill_value=999999)
>>> hardened = numpy.ma.harden_mask(m)
>>> assert hardened.hardmask
>>> assert m.hardmask, 'harden_mask() affects AND returns the argument'
>>> m[9] = 23
>>> m
masked_array(data=[0, 1, 2, 3, 4, 5, --, --, 42, --],
mask=[False, False, False, False, False, False, True, True,
False, True],
fill_value=999999)
>>> m[:] = 23
>>> m
masked_array(data=[23, 23, 23, 23, 23, 23, --, --, 23, --],
mask=[False, False, False, False, False, False, True, True,
False, True],
fill_value=999999)

关于numpy - 硬掩码和软掩码 numpy 数组有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70611171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com