如何在PyTorch中便捷嵌套arange生成两个区间的所有组合?
PyTorch中生成两个区间所有组合的简便方法
你可以用以下两种简便方法实现需求,完全替代嵌套循环的逻辑:
方法一:直接使用torch.cartesian_prod()
这是PyTorch内置的笛卡尔积生成函数,最简洁高效,完全匹配你的需求:
import torch x = torch.arange(2, 4) y = torch.arange(0, 3) result = torch.cartesian_prod(x, y) print(result) # 输出: # tensor([[2, 0], # [2, 1], # [2, 2], # [3, 0], # [3, 1], # [3, 2]])
该函数支持任意数量的输入张量,区间范围可以灵活调整,无需修改核心逻辑。
方法二:用torch.meshgrid()手动构造
如果需要理解底层逻辑,可以通过网格生成+重塑的方式实现:
import torch x = torch.arange(2, 4) y = torch.arange(0, 3) # 用'ij'索引生成匹配嵌套循环逻辑的网格 x_grid, y_grid = torch.meshgrid(x, y, indexing='ij') # 展平后拼接成二维张量 result = torch.stack([x_grid.flatten(), y_grid.flatten()], dim=1) print(result) # 输出与方法一一致
内容的提问来源于stack exchange,提问作者Monolith
相关产品推荐
相关产品推荐

