gpt4 book ai didi

python - 如何测试numpy数组中的每个元素是否被屏蔽

转载 作者:太空狗 更新时间:2023-10-29 22:04:18 25 4
gpt4 key购买 nike

如何测试 numpy 数组中的每个元素是否都被屏蔽了?这是我想要做的:

x = #is a maksed numpy array
masked_min = numpy.ma.min(x)
if masked_min IS NOT A MASKED ELEMENT:
#do some stuff only if masked_min is a value

在实践中我看到了这个:

>>> x = numpy.ma.array(numpy.array([1,2,3]),mask=[True,True,True])
>>> masked_min = numpy.ma.min(x)
masked

测试 masked 没有帮助:

>>> numpy.ma.sum(x) == numpy.ma.masked
masked

最佳答案

如果“测试整个数组是否在 numpy 中被屏蔽”是指是否每个元素都被屏蔽,因为屏蔽本身是一个数组,您可以使用 .mask.all():

>>> x = numpy.ma.array(numpy.array([1,2,3]),mask=[True,True,True])
>>> x
masked_array(data = [-- -- --],
mask = [ True True True],
fill_value = 999999)

>>> x.mask
array([ True, True, True], dtype=bool)
>>> x.mask.all()
True

或者可能是 .count(),但这是依赖于轴的。 OTOH 如果你真的只需要测试你的 min 调用的结果是否被“屏蔽”,你可以直接这样做:

>>> numpy.ma.min(x)
masked
>>> type(_)
<class 'numpy.ma.core.MaskedConstant'>
>>> isinstance(numpy.ma.min(x), numpy.ma.core.MaskedConstant)
True
>>> numpy.ma.min(x) is numpy.ma.masked
True

[可能有更简单的方法来做到这一点;我自己很少使用掩码数组。]

关于python - 如何测试numpy数组中的每个元素是否被屏蔽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10867994/

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