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

Python如何查找数组中所有列值均为inf的行

Python筛选全列值均为inf的数组行实现方法

绝大多数n*m维度的数值数组处理场景都基于numpy实现,以下分别给出numpy环境和原生Python列表环境的实现方案:

numpy数组实现(推荐,处理大数组效率最高)

核心逻辑分两步:

  • 逐元素判断数组值是否为inf,生成同维度的布尔掩码数组
  • 沿列方向对每行做全真判断,筛选出所有元素都为inf的行
import numpy as np

# 测试数组,其中索引为1的行是全inf行
demo_arr = np.array([
    [2, np.inf, 7],
    [np.inf, np.inf, np.inf],
    [4, 9, np.inf]
])

# 逐元素识别inf值,支持识别正inf、负inf
inf_mask = np.isinf(demo_arr)
# 按行判断是否所有元素都是inf,得到行级布尔掩码
all_inf_row_mask = inf_mask.all(axis=1)

# 获取所有全inf行的索引
all_inf_row_index = np.where(all_inf_row_mask)[0]
# 直接提取所有全inf行的内容
all_inf_rows = demo_arr[all_inf_row_mask]

如果只需要筛选全为正inf的行,把逐元素判断的逻辑替换为demo_arr == np.inf即可;如果只筛选全为负inf的行,替换为demo_arr == -np.inf。

原生Python嵌套列表实现

如果使用的是Python原生嵌套列表结构,没有依赖numpy,可以借助内置all()函数配合math模块的inf判断实现:

import math

# 测试嵌套列表
demo_list = [
    [2, float('inf'), 7],
    [float('inf'), float('inf'), float('inf')],
    [4, 9, float('inf')]
]

all_inf_rows = []
all_inf_row_index = []
for idx, row in enumerate(demo_list):
    # 逐行判断所有元素是否为inf
    if all(math.isinf(item) for item in row):
        all_inf_rows.append(row)
        all_inf_row_index.append(idx)

注意:不建议直接用item == float('inf')做判断,该写法无法识别负inf值,仅在确定只需要匹配正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:16:21