Numpy:删除所有nan或0值的行

2024-09-28 20:43:47 发布

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

如果行是nan0,我想删除表中的所有值。

我知道有一种使用pandas的方法可以做到这一点,即pandas.dropna(how = 'all'),但是我希望使用numpy方法删除所有nan0的行。

是否有有效的实施?


Tags: 方法numpypandasnanallhowdropna行是
3条回答
import numpy as np

a = np.array([
    [1, 0, 0],
    [0, np.nan, 0],
    [0, 0, 0],
    [np.nan, np.nan, np.nan],
    [2, 3, 4]
])

mask = np.all(np.isnan(a) | np.equal(a, 0), axis=1)
a[~mask]

另外:如果要删除任何单个值中有nan或0的行

a = np.array([
    [1, 0, 0],
    [1, 2, np.nan],
    [np.nan, np.nan, np.nan],
    [2, 3, 4]
])

mask = np.any(np.isnan(a) | np.equal(a, 0), axis=1)
a[~mask]

输出

array([[ 2.,  3.,  4.]])

这将删除所有为零或所有NaN的行:

mask = np.all(np.isnan(arr), axis=1) | np.all(arr == 0, axis=1)
arr = arr[~mask]

这将删除所有为零或NaN的行:

mask = np.all(np.isnan(arr) | arr == 0, axis=1)
arr = arr[~mask]

相关问题 更多 >