2014-02-12 72 views
4

我想要做的事情,我認爲應該是相對簡單的朱莉婭,但我似乎無法找到任何提及這個問題。在朱莉婭的數組乘法

基本上我得到的是mxn矩陣和nx1向量。我想要做的就是將矢量與矩陣相乘,按照元素的方式進行,但是要沿軸進行,以便矩陣的每個元素都相乘。

numpy例如,這將是:

np.multiply(array, vector) 

有沒有辦法在朱莉婭做到這一點?

我嘗試了延長載體填充數組:

projection = 1:size(matrix)[1] 
weight_change = hcat(map(x -> vector, projection)) 

但得到的東西與類型的Array{Array{Float64, 2}, 2},當我真正需要的僅僅是Array{Float64, 2},這意味着按元素相乘不會真的有用。

是否有任何方法可以修復我的方法或糾正我的錯誤解決方案?

+0

'np.multiply(陣列,載體,軸= 0)'無效'numpy',是嗎? – DSM

+0

@DSM哦,dorp,你完全正確,不需要軸元素,只需自動完成。 –

回答

9

你正在尋找的.*逐元素,廣播乘法操作符:

julia> A = [ i + j*im for i=1:3, j=1:4 ] 
3x4 Array{Complex{Int64},2}: 
1+1im 1+2im 1+3im 1+4im 
2+1im 2+2im 2+3im 2+4im 
3+1im 3+2im 3+3im 3+4im 

julia> v = [1:4] 
4-element Array{Int64,1}: 
1 
2 
3 
4 

julia> w = [1:3] 
3-element Array{Int64,1}: 
1 
2 
3 

julia> A .* w 
3x4 Array{Complex{Int64},2}: 
1+1im 1+2im 1+3im 1+4im 
4+2im 4+4im 4+6im 4+8im 
9+3im 9+6im 9+9im 9+12im 

julia> A .* v' 
3x4 Array{Complex{Int64},2}: 
1+1im 2+4im 3+9im 4+16im 
2+1im 4+4im 6+9im 8+16im 
3+1im 6+4im 9+9im 12+16im 
+0

我...有點尷尬,這不是我頭腦去的第一個地方,但非常感謝你回答我的問題。 –