如果每个元素都被屏蔽,如何使np.ma.argmin返回None?

2024-09-25 10:25:56 发布

您现在位置:Python中文网/ 问答频道 /正文

动机:在一个数值列表中,我试图找到最小值的索引——附带条件是,该值必须低于某个树型。下面是一个示例,其中所有内容都按预期工作

import numpy as np
a = np.array([1, 5, -4])
threshold = 3
b = np.ma.MaskedArray(a, a >= threshold)
np.ma.argmin(b)  # returns 2, since a[2] is -4 which is the smallest element < 3

这里是一个np.ma.argmin做了一些意想不到的事情的例子:

a = np.array([4, 5])
threshold = 3
b = np.ma.MaskedArray(a, a >= threshold)
np.ma.argmin(b)  # returns 0, expected a None etc. since there is no element < 3

这是为什么?我如何使它返回None?注意:设置fill_value = None没有帮助


Tags: none列表thresholdisnpelementarrayreturns
1条回答
网友
1楼 · 发布于 2024-09-25 10:25:56

argmin的代码是:

def argmin(self, axis=None, fill_value=None, out=None):
    if fill_value is None:
        fill_value = minimum_fill_value(self)
    d = self.filled(fill_value).view(ndarray)
    return d.argmin(axis, out=out)

它用适当的填充值填充它(对于int-dtype,它是最大的整数),然后执行一个规则数组argmin。如果所有值都被屏蔽,那么所有值都是这个max,第一个值是argmin

b.min()返回一个特殊的mama.MaskedConstant。因此,您可能需要对argmin调用进行某种类型的测试,以测试该值。我没有立即看到一个np.ma.is...函数来测试这一点。但文件中可能有一些东西

相关问题 更多 >