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

PyTorch中高效提取非对称张量的特定对角线元素

高效提取PyTorch张量中指定元素(非对称张量的类对角线操作)

你有一个形状为(5 * n, n)的PyTorch张量,需要按以下规则提取元素:第一列取前5行,第二列取接下来的5行,以此类推处理完所有列。下面是两种无循环的高效实现方式,适合大规模张量的重复运算:

示例输入

import torch
t = torch.arange(45).reshape(15, 3)

期望输出

tensor([0, 3, 6, 9, 12, 16, 19, 22, 25, 28, 32, 35, 38, 41, 44])

解决方案

方法1:重塑+高级索引

把原张量拆分成n个5行n列的子块,每个子块取对应位置的列,最后展平结果:

n = t.shape[1]
out = t.reshape(n, 5, n)[torch.arange(n), :, torch.arange(n)].flatten()

方法2:构造索引对直接取值

生成匹配的行、列索引,直接通过张量索引提取目标元素:

n = t.shape[1]
row_indices = torch.arange(5 * n)
col_indices = torch.arange(n).repeat_interleave(5)
out = t[row_indices, col_indices]

两种方法都是纯张量操作,没有Python循环,运算效率极高,适合上千次重复处理大张量的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:43:29