python - 用一维张量对二维张量进行子集化
问题描述
我想从二维张量的每一行中提取存储在另一个一维张量中的列。
import torch
test_tensor = tensor([1,-2,3], [-2,7,4]).float()
select_tensor = tensor([1,2])
所以在这个特定的例子中,我想获得位置 1 的第一行的元素(so -2)和位置 2 的第二行的元素(so 4)。我试过了:
test_tensor[:, select_tensor]
但这会为每一行选择位置 1 和 2 的元素。我怀疑这可能是我错过的非常简单的事情。
解决方案
如果您正在寻找带有索引的解决方案,您也需要建立索引axis=0
,您可以这样做torch.arange
:
>>> test_tensor = torch.tensor([[1,-2,3], [-2,7,4]])
>>> select_tensor = torch.tensor([1,2])
>>> test_tensor[torch.arange(len(select_tensor)), select_tensor]
tensor([-2, 4])
推荐阅读
- shiny - 闪亮:在 downloadHandler 中使用 validate()
- ionic-framework - 当应用程序在离子背景中时,类似whatsapp的警报
- python - 从列表中创建相等值索引的子列表
- polymer-3.x - 聚合物 3 构建 --> 自定义元素 js 不可用
- html - 在滚动期间更改文本颜色
- python - 据称不正确的输出 np.reshape 函数
- windows - 如何在 Windows 上找到控制台输出的源位置?
- python - 在Python中按索引从字符串中删除多个元素
- pydev - Eclipse Pydev 交互式控制台使用里面的函数
- delve - 无法再次停止 dlv 调试 --headless - 在 mac 上的 docker 容器中运行