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

如何将字符串矩阵转换为PyTorch布尔张量(非遍历实现)

无需遍历的字符串矩阵转PyTorch布尔张量方案

方法1:借助NumPy实现向量化转换

先将字符串列表转换为NumPy数组,通过向量化比较判断是否为空字符串,再转换为PyTorch张量:

import numpy as np
import torch

# 你的原始字符串矩阵
edge_matrix = [
    ['SELF', '', '', '', ''],
    ['nsubj', 'SELF', '', '', ''],
    ['', 'compound', 'SELF', '', ''],
    ['dobj', '', '', 'SELF', ''],
    ['pobj', '', '', '', 'SELF']
]

# 一步完成转换:数组比较+转张量
edge_mask = torch.tensor(np.array(edge_matrix) != "", dtype=torch.float32)
# 若需要布尔类型张量,改为 dtype=torch.bool

方法2:纯PyTorch原生实现

直接将字符串列表转为PyTorch字符串张量,再执行向量化比较:

import torch

edge_matrix = [
    ['SELF', '', '', '', ''],
    ['nsubj', 'SELF', '', '', ''],
    ['', 'compound', 'SELF', '', ''],
    ['dobj', '', '', 'SELF', ''],
    ['pobj', '', '', '', 'SELF']
]

# 字符串张量转置+向量化比较
str_tensor = torch.tensor(edge_matrix, dtype=torch.str)
edge_mask = (str_tensor != "").float()
# 布尔类型直接取 str_tensor != "" 即可

原理说明

这两种方法都利用了向量化操作,底层由PyTorch/NumPy的优化代码批量处理所有元素,避免了手动嵌套循环的开销,尤其在矩阵规模较大时,效率提升明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:10:11