如何高效基于大型概率矩阵运行rbinom()生成0-1矩阵?
更快生成0-1矩阵的实现方法
你当前用apply逐元素调用rbinom的方式效率低,核心原因是apply本质是在做逐元素循环,对大矩阵来说会产生大量函数调用开销。
直接利用rbinom的向量化特性就能大幅提升速度,因为rbinom支持直接传入向量/矩阵类型的prob参数,无需逐元素处理:
# 生成与M同维度的0-1矩阵 result <- matrix(rbinom(prod(dim(M)), 1, prob = M), nrow = nrow(M), ncol = ncol(M))
简单说明:
prod(dim(M))算出矩阵总元素数,作为rbinom要生成的随机数总量rbinom会自动把矩阵M当作向量处理,一次性生成所有对应概率的0-1值- 最后用
matrix()把生成的向量还原为原矩阵的维度
这种方法完全规避了循环和逐元素函数调用,处理20000×90这类大矩阵时,速度会比apply快很多。
内容的提问来源于stack exchange,提问作者locket
相关产品推荐
相关产品推荐

