Python 如何正确实现矩阵乘法和
我正在使用平坦的10x10(nxn)邻接矩阵。我们把这个矩阵称为A。这个矩阵表示一个图,我想应用一个边到边的过滤器。此过滤器遵循以下等式: F_ij=[[sum k=1->n[A_ik+A_ki]]-2A_ij]*A_ij 结果应该是另一个10x10矩阵,基本上计算相邻边。我很难得到正确的答案。我拥有的代码是:Python 如何正确实现矩阵乘法和,python,arrays,numpy,matrix,graph,Python,Arrays,Numpy,Matrix,Graph,我正在使用平坦的10x10(nxn)邻接矩阵。我们把这个矩阵称为A。这个矩阵表示一个图,我想应用一个边到边的过滤器。此过滤器遵循以下等式: F_ij=[[sum k=1->n[A_ik+A_ki]]-2A_ij]*A_ij 结果应该是另一个10x10矩阵,基本上计算相邻边。我很难得到正确的答案。我拥有的代码是: F = np.zeros([10,10]) for i in range(10): for j in range(10): for k in range(10):
F = np.zeros([10,10])
for i in range(10):
for j in range(10):
for k in range(10):
F[i][j] = ((A[j][k] + A[k][j]) - 2*A[i][j])*A[i][j]
print(F)
我得到的结果F是:
我做错了什么?在
k
循环中不应该有sum
?e、 gF[i,j]+=((A[i,k]+A[k,i])…
您可以使用broadcasting
而不是循环,但首先,您应该正确使用循环。这是基本的python,即使它不是最佳的numpy
F=((A+A.t).sum(axis=1)-2*A)*A
是我第一次尝试。@hpaulj谢谢你的有用评论。我添加了总结,现在我得到了我想要的。尽管我还有3个for循环。我必须阅读广播方面的内容才能修复它