Numpy技巧: 由label获得相等矩阵

Numpy技巧: 由label获得相等矩阵
 
 
假设Label为:  [ABAC] , 如何方便的得到一个矩阵, 其元素i,j表示第i位和第j位相等呢?
 
先把Label复制扩展成: m,m 的矩阵: l.expand(m,m)
 
ABAC
ABAC
ABAC
ABAC
 
这个矩阵M1只和col有关 [x,j] 为 第j个 标签 
 
再转置一下: l.expand(m,m).t()
 
AAAA
BBBB
AAAA
CCCC
 
这个矩阵M2只和row有关 [i,x] 为第i个 标签
 
M2==M1 其中为1的地方就是 [i,j] 这两个标签相等
 
写在一起就是: l.expand(m,m).t().eq(l.expand(m,m)).int()
 
 
当然还有另一种写法: l.unsqueeze(1)==l.unsqueeze(0)

 

 

posted @ 2021-03-29 14:08  酱_油  阅读(154)  评论(0编辑  收藏  举报