【问题标题】:Finding column index of a PyTorch tensor that has most 1's查找具有最多 1 的 PyTorch 张量的列索引
【发布时间】:2020-08-09 18:36:49
【问题描述】:

我有一个PyTorch 张量a,形状如下:

import torch
a = torch.tensor([[[1., 0., 0., 0.]],
        [[0., 1., 0., 0.]],
        [[1., 0., 0., 0.]],
        [[0., 0., 0., 1.]],
        [[1., 0., 0., 0.]],
        [[0., 0., 0., 1.]],
        [[1., 0., 0., 0.]]])

张量a的每一行有4个元素,1和0。假设我相应地索引了这个张量的行和列。例如,第 0 行(最上一行)中的条目是 [[1., 0., 0., 0.]],而第 3 列(最右列)中的条目是 [[0., 0., 0., 1., 0., 1., 0.]]

从给定的张量中,我想确定1. 出现频率最高的列的索引。例如,对于张量a,此类列的索引将为 0。如果 1. 的数量存在关联,我仍然希望获取所有关联列索引。

如何在 Python 上轻松完成这项任务?

谢谢,

【问题讨论】:

    标签: python pytorch tensor


    【解决方案1】:

    如果你的矩阵只包含0和1,你可以对每一列的元素求和,然后搜索最大的和:

    import numpy as np
    
    % sum over columns
    sumsi = torch.sum(a, dim=1)
    
    % find where maximum
    col_idx = np.where(sumsi==np.max(sumsi))
    

    【讨论】:

    • 如果你只需要一个条目,使用 np.argmax
    • 啊,真的。我一直忘记这个功能XD
    猜你喜欢
    • 2019-05-31
    • 2020-03-28
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 2020-07-04
    • 2019-02-05
    • 2019-09-15
    相关资源
    最近更新 更多