Bs *_* He 7 r matrix-multiplication
我有两个矩阵A和B,有啥最快的方法只是计算diag(A%*%B),即内积第i的行A和第i列B,以及其他方面的产品内部并不关心.
补充:A并分别B有大的行号和列号.
And*_*lin 14
这可以在没有完全矩阵乘法的情况下完成,仅使用矩阵元素的乘法.
我们需要乘以A匹配列的行B并对元素求和.行的A列是t(A),我们乘以元素方式B并将列相加.
换一种说法: colSums(t(A) * B)
测试代码我们首先创建样本数据:
n = 5
m = 10000;
A = matrix(runif(n*m), n, m);
B = matrix(runif(n*m), m, n);
Run Code Online (Sandbox Code Playgroud)
你的代码:
diag(A %*% B)
# [1] 2492.198 2474.869 2459.881 2509.018 2477.591
Run Code Online (Sandbox Code Playgroud)
没有矩阵乘法的直接计算:
colSums(t(A) * B)
# [1] 2492.198 2474.869 2459.881 2509.018 2477.591
Run Code Online (Sandbox Code Playgroud)
结果是一样的.