如何在不使用循环的情况下提取 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.])
我有一个包含 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.])