You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NumPy中如何获取含inf值的被删除行的索引

实现方法

核心思路是先构造每行是否为全inf的布尔掩码,基于掩码既可以筛选保留行,也可以直接提取被删除行的索引,不需要额外遍历。

  • 第一步:生成全inf行判断掩码
    推荐用更鲁棒的判断逻辑,避免NaN值干扰判断结果:
    import numpy as np
    # 逐行判断是否所有元素都是inf,返回布尔数组,True代表当前行是全inf待删除行
    row_all_inf_mask = np.isinf(BD).all(axis=1)
    
    如果你要沿用原有基于最小值判断的逻辑,也可以写为:
    row_all_inf_mask = (BD.min(axis=1) == np.inf)
    

    注意:原有min判断逻辑存在隐患:如果行内混有NaN值,min(axis=1)会返回NaN,NaN == np.inf结果为False,会把混有NaN和inf的行误判为非全inf行保留,优先推荐np.isinf().all()的写法。

  • 第二步:提取被删除行的索引
    直接通过np.where提取掩码中为True的位置,就是所有被删除行的原始索引,可以直接存为新数组:
    deleted_row_indices = np.where(row_all_inf_mask)[0]
    
  • 第三步:筛选得到去掉全inf行的目标数组
    对掩码取反,筛选所有非全inf的行即可:
    finding_all_infValue = BD[~row_all_inf_mask]
    
效果示例

拿测试数组验证逻辑:

BD = np.array([
    [np.inf, np.inf, np.inf],
    [1, 2, np.inf],
    [np.inf, 3, 4],
    [np.inf, np.inf, np.inf]
])

运行上述代码后:

  • deleted_row_indices输出为array([0, 3]),对应两个全inf行的原始索引
  • finding_all_infValue输出为:
    array([[ 1.,  2., inf],
           [inf,  3.,  4.]])
    
    完全符合删除全inf行的需求。

内容的提问来源于stack exchange,提问作者david

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:21:33