一个奇怪的语法形式 a [] @ b []

priors = x[None, :, :, None, :] @ self.route_weights[:, None, :, :, :]

这句的作用到底是什么,是两者比较内容还是比较格式,还是说把前面的格式转换成后者的格式
输入变量也显示不出什么区别
各位前辈帮个忙分析一下

pardon110
最佳答案

此处 @ 在3.5+后引入,通常是表示矩阵乘法在Numpy中大量出现, 比较矩阵乘法与元素乘法

A = [[1, 2],    B = [[11, 12],
     [3, 4]]         [13, 14]]

# 元素乘法会产生
A * B = [[1 * 11,   2 * 12], 
         [3 * 13,   4 * 14]]

# 矩阵乘法会产生
A @ B  =  [[1 * 11 + 2 * 13,   1 * 12 + 2 * 14],
           [3 * 11 + 4 * 13,   3 * 12 + 4 * 14]]
4年前 评论
讨论数量: 1
pardon110

此处 @ 在3.5+后引入,通常是表示矩阵乘法在Numpy中大量出现, 比较矩阵乘法与元素乘法

A = [[1, 2],    B = [[11, 12],
     [3, 4]]         [13, 14]]

# 元素乘法会产生
A * B = [[1 * 11,   2 * 12], 
         [3 * 13,   4 * 14]]

# 矩阵乘法会产生
A @ B  =  [[1 * 11 + 2 * 13,   1 * 12 + 2 * 14],
           [3 * 11 + 4 * 13,   3 * 12 + 4 * 14]]
4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!