小编sal*_*otz的帖子

对 numpy 屏蔽数组的操作给出屏蔽的无效值

来自 numpy数组上的 numpy 操作中的屏蔽数组的文档:

numpy.ma 模块附带了大多数 ufunc 的特定实现。每当输入被屏蔽或超出有效域时,具有有效域(例如对数或除法)的一元和二元函数都会返回屏蔽常量:例如:

ma.log([-1, 0, 1, 2])
masked_array(data = [-- -- 0.0 0.69314718056],
             mask = [ True  True False False],
       fill_value = 1e+20)
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,对于我的计算,我需要知道这些无效操作是在哪里产生的。具体来说,我想要这样:

ma.log([-1, 0, 1, 2])
masked_array(data = [np.nan -- 0.0 0.69314718056],
             mask = [ True  True False False],
       fill_value = 1e+20)
Run Code Online (Sandbox Code Playgroud)

冒着这个问题成为对话的风险,我的主要问题是:

masked_array在计算出的无效值(由fix_invalidnp.nan 和 np.inf 等“固定”的值)不会转换为(并与)掩码值合并的情况下,有什么好的解决方案可以解决这个问题?

我当前的解决方案是计算 上的函数masked_array.data,然后用原始掩码重建掩码数组。但是,我正在编写一个应用程序,它将用户的任意函数映射到许多不同的数组上,其中一些被屏蔽,一些则没有,并且我希望避免仅针对屏蔽数组的特殊处理程序。此外,这些数组在 MISSING、NaN 和 Inf 之间存在区别,这一点很重要,因此我不能只使用带有np.nans 的数组而不是masked值。


此外,如果有人对这种行为存在的原因有任何看法,我想知道。在同一操作中使用此功能似乎很奇怪,因为对未屏蔽值进行操作的结果的有效性实际上是用户的责任,用户可以选择使用该函数来“清理” fix_invalid

此外,如果有人知道 numpy 中缺失值的进展情况,请分享,因为最旧的帖子是 2011-2012 …

python arrays numpy missing-data masked-array

2
推荐指数
1
解决办法
1593
查看次数

python 函数作为可选的生成器

假设我有一个函数,我想选择是否返回结果。这很容易编码:

def foo(N, is_return=False):
    l = []
    for i in range(N):
        print(i)
        if is_return:
            l.append(i)
    if is_return:
        return l
Run Code Online (Sandbox Code Playgroud)

但是现在可以说我希望该函数成为一个生成器。我会写这样的东西:

def foo_gen(N, is_return=False):
    for i in range(N):
        print(i)
        if is_return:
            yield i
Run Code Online (Sandbox Code Playgroud)

所以大概 when is_returnis Falsethenfoo_gen只是一个没有返回值的函数, when is_returnisTrue foo_gen是一个生成器,我希望有两个不同的调用:

In [1]: list(foo_gen(3, is_return=True))
0
1
2
Out[2]: [0, 1, 2]
Run Code Online (Sandbox Code Playgroud)

因为当它是一个生成器并且您必须遍历产生的值时,并且:

>>> In [2]: foo_gen(3)
0
1
2
Run Code Online (Sandbox Code Playgroud)

因为当它不是生成器并且它只是具有副作用并且您不必遍历它时。但是,后一种行为不起作用,而只是返回生成器。你不能从中得到任何东西:

In [3]: list(foo_gen(3, is_return=False))
0
1
2
Out[3]: []
Run Code Online (Sandbox Code Playgroud)

但这并不是很好,并且对于那些不希望必须遍历任何内容以产生副作用的 API 用户来说是令人困惑的。

反正有没有In …

python generator

1
推荐指数
1
解决办法
331
查看次数

标签 统计

python ×2

arrays ×1

generator ×1

masked-array ×1

missing-data ×1

numpy ×1