二维方阵每行单独归一化,实现时没报错,但结果并不对,debug后发现原来是自己对numpy的boardcast理解有误,以下记录。
boardcast依次遵循三项原则:
1、如果两个数组维数不相等,维数较低的数组的shape会从左开始填充1,直到和高维数组的维数匹配
2、如果两个数组维数相同,但某些维度的长度不同,那么长度为1的维度会被扩展,和另一数组的同维度的长度匹配
3、如果两个数组维数相同,但有任一维度的长度不同且不为1,则报错
因此,在做每行单独归一化是,应加入reshape(-1, 1)
transmission /= transmission.sum(axis=-1).reshape(-1, 1)
transmission 是方阵
参考: