如何在不使用循环的情况下提取 numpy 数组的有限值

How to extract finite values of a numpy array without using a loop

我有一个包含 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 等指令的循环来获取我想要的子数组,但我想知道是否有更有效的方法来做到这一点?

使用~运算符和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.])