【问题标题】:How to extract finite values of a numpy array without using a loop如何在不使用循环的情况下提取 numpy 数组的有限值
【发布时间】:2020-07-21 23:31:46
【问题描述】:

我有一个包含 nan 的 numpy 数组,我只想提取有限值来获取子数组,但不使用循环。

例如:

import numpy as np

z = np.array([2, 3, np.nan, 5])

我想使用如下指令:

z_cut = z[z != np.nan]

但这不起作用,因为无法以这种方式比较 nan。

我可以使用带有 np.isnan 或 np.isfinite 等指令的循环来获取我想要的子数组,但我想知道是否有更有效的方法来做到这一点?

【问题讨论】:

  • 这能回答你的问题吗? How can I remove Nan from list Python/NumPy
  • 这与我的帖子有点不同,因为您分享的帖子中的“nan”实际上不是 NaN 值,而是一个字符串。接受的答案更接近我的预期,但谢谢。

标签: python nan


【解决方案1】:

使用~ 运算符和np.isnan 函数

In [23]: import numpy as np
    ...:
    ...: z = np.array([2, 3, np.nan, 5])

In [24]: z[~np.isnan(z)]
Out[24]: array([2., 3., 5.])

In [25]: z_cut = z[~np.isnan(z)]

In [26]: z_cut
Out[26]: array([2., 3., 5.])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-29
    • 2019-12-01
    • 2017-03-25
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 2020-03-19
    相关资源
    最近更新 更多