由于不是生成cotan Lap 所以也不难,只是用到了一些 numpy的技巧,记录一下。
# 1-based, like
'''
1 2 3
1 3 4
'''
fF="F.txt"
F=np.loadtxt(fF, np.int32)-1
nV = F.max()+1
Lap = np.zeros( (nV, nV), np.float32 )
# 每行生成组合
for f in F:
for e in list(combinations(f.tolist(), 2)):
Lap[e[0], e[1]] = Lap[e[1], e[0]] = 1
# 取得对角线索引
Lap[ np.diag_indices_from(Lap) ] = -Lap.sum(axis=1)
# 填充空维度
Lap /= np.abs(Lap).max(axis=1)[:, np.newaxis]