两个矩阵的乘积

浸礼会

我试图找到一种向量化的技巧,以计算两个矩阵的i和列之间i的乘积,而又不浪费其他乘积上的资源(行i和列j,i!= j)。

A <- matrix(rnorm(4*5), nrow=4)
B <- matrix(rnorm(5*4), ncol=4)

diag(A %*% B)

该产品是否有名称,基本的R函数或避免for循环的重塑策略

for (ii in seq.int(nrow(A)))
    print(crossprod(A[ii,], B[,ii]))
朱利叶斯·维诺拉(Julius Vainora)

rowSums(A * t(B)) 似乎很快:

A <- matrix(rnorm(400*500), nrow=400)
B <- matrix(rnorm(500*400), ncol=400)

bF <- function() diag(A %*% B)
jF <- function() rowSums(A * t(B))
vF <- function() mapply(crossprod, as.data.frame(t(A)), as.data.frame(B))
lF <- function() {
  vec <- numeric(nrow(A))
  for (ii in seq.int(nrow(A)))
    vec[ii] <- crossprod(A[ii,], B[,ii])
  vec
}

library(microbenchmark)
microbenchmark(bF(), jF(), vF(), lF(), times = 100)   
# Unit: milliseconds
#  expr        min         lq     median         uq       max neval
#  bF() 137.828993 183.320782 185.823658 200.747130 207.67997   100
#  jF()   4.434627   5.300882   5.341477   5.475393  46.96347   100
#  vF()  39.110948  51.071936  54.147338  55.127911 102.17793   100
#  lF()  14.029454  18.667055  18.931154  22.166137  65.40562   100

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带螺纹的两个矩阵的乘积

来自分类Dev

Hadamard的两个巨大稠密矩阵的乘积与稀疏矩阵的乘积

来自分类Dev

尝试对两个乘积求和时出错,其中一个乘积是1x2矩阵

来自分类Dev

单次操作仅沿最后两个维取矩阵乘积

来自分类Dev

为什么两个numpy(n,)向量的矩阵@乘积是点积,而不是外积?

来自分类Dev

为什么该程序(对于两个矩阵的乘积)不起作用?

来自分类Dev

两个矩阵的所有列组合的按分量乘积

来自分类Dev

两个beta分布的乘积

来自分类Dev

如何获得两个RDD的乘积?

来自分类Dev

整合两个功能的乘积

来自分类Dev

如何获得两个清单的乘积?

来自分类Dev

如何整合两个功能的乘积

来自分类Dev

来自两个索引的唯一值乘积的MultiIndex

来自分类Dev

连接两个生成笛卡尔乘积的表

来自分类Dev

比较两个整数乘积而不会溢出

来自分类Dev

两个data.frames列之间的乘积

来自分类Dev

可以容纳两个size_t乘积的类型

来自分类Dev

两个多项式的Ocaml乘积

来自分类Dev

Haskell中两个函数的最通用的“乘积”类型

来自分类Dev

两个等于numpy数组的乘积不同

来自分类Dev

如何计算两个向量的某些部分的乘积

来自分类Dev

如何在熊猫中做两个数据框的矩阵乘积?

来自分类Dev

如何比较两个矩阵?

来自分类Dev

在C ++中将两个矩阵相乘

来自分类Dev

在MATLAB中合并两个矩阵

来自分类Dev

通过列名合并两个矩阵

来自分类Dev

交替,交织或交织两个矩阵

来自分类Dev

如何对两个矩阵求和?

来自分类Dev

在两个矩阵之间查找值