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

如何移除PyTorch张量中特定维度含NaN的所有索引?

解决方案

需求明确:移除张量中所有在同一行(第二维度)存在NaN的行——即只要某一行在任意样本中包含NaN,就删除所有样本的该行。

实现步骤及代码

  1. 生成NaN掩码,检测每一行是否存在NaN:
import torch

# 补全原张量的语法错误后定义
a = torch.tensor([[[2,3],
                   [3,4],
                   [4,5]],
                  [[3,6],
                   [6,2],
                   [2,-1]],
                  [[float('nan'), 1],
                   [2,3], 
                   [3,2]]])

# 沿第一、第三维度检查,标记第二维度中存在NaN的行
has_nan = torch.isnan(a).any(dim=(0, 2))
  1. 筛选保留行并生成干净张量:
# 取反得到需要保留的行索引
keep_rows = ~has_nan

# 通过索引得到最终结果
a_clean = a[:, keep_rows, :]

验证结果

执行后a_clean的输出与预期完全一致:

tensor([[[3, 4],
         [4, 5]],

        [[6, 2],
         [2, -1]],

        [[2, 3],
         [3, 2]]])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:05:20