Man*_*idt 3 parallel-processing julia
我想将矩阵的每一行乘以一个随机数,例如
Y = R*X
Run Code Online (Sandbox Code Playgroud)
对角矩阵R大小的TxN含有条目从rand()与基体X尺寸的NxM与非常大的 T和N.目前我使用
r = rand(T)
Y = scale(r, X)
Run Code Online (Sandbox Code Playgroud)
但我想知道这是做得更快还是更好.例如,我认为没有必要创建向量r,但我不知道如何y[i] = rand()*X[i,:]有效/并行调用.
您可以使用scale!以进行修改X:
julia> X = [ 1/(i + j - 1) for i=1:5, j=1:5 ]
5x5 Array{Float64,2}:
1.0 0.5 0.333333 0.25 0.2
0.5 0.333333 0.25 0.2 0.166667
0.333333 0.25 0.2 0.166667 0.142857
0.25 0.2 0.166667 0.142857 0.125
0.2 0.166667 0.142857 0.125 0.111111
julia> r = rand(5)
5-element Array{Float64,1}:
0.98996
0.88145
0.808518
0.632665
0.00807468
julia> scale!(r,X);
julia> X
5x5 Array{Float64,2}:
0.98996 0.49498 0.329987 0.24749 0.197992
0.440725 0.293817 0.220363 0.17629 0.146908
0.269506 0.20213 0.161704 0.134753 0.115503
0.158166 0.126533 0.105444 0.0903807 0.0790832
0.00161494 0.00134578 0.00115353 0.00100933 0.000897187
Run Code Online (Sandbox Code Playgroud)
这避免了分配新矩阵,这大大节省了内存和时间.