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

新手上路,请多包涵

如果行 = nan0 ,我想从表中删除所有值。

我知道有一种方法可以使用熊猫 ie pandas.dropna(how = 'all') 但我想要一个 numpy 方法来删除所有行 nan0

是否有有效的实施方式?

原文由 Black 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 751
2 个回答
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]

原文由 HYRY 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

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

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

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

原文由 Jaime 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题