【问题标题】:Array Multiplication in JuliaJulia中的数组乘法
【发布时间】:2023-03-16 01:00:01
【问题描述】:

我正在尝试做一些我认为在 Julia 中应该相对简单的事情,但我似乎找不到任何关于这个问题的提及。

基本上我得到的是一个mxn 矩阵和一个nx1 向量。我想做的是将向量与矩阵相乘,逐元素,但沿轴相乘,这样矩阵的每个元素都相乘。

numpy 中,例如:

np.multiply(array, vector)

在 Julia 中有没有办法做到这一点?

我尝试扩展向量以填充数组:

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

但这会产生 Array{Array{Float64, 2}, 2} 类型的东西,而我真正需要的只是 Array{Float64, 2},这意味着逐元素乘法不会真正起作用。

有什么方法可以修复我的方法或修复我的错误解决方案?

【问题讨论】:

  • np.multiply(array, vector, axis=0) 无效numpy,是吗?
  • @DSM 哦,dorp,你说得对,不带轴元素,只是自动完成。

标签: arrays types multiplication julia


【解决方案1】:

您正在寻找 .* 逐元素广播乘法运算符:

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

【讨论】:

  • 我...有点尴尬,这不是我想到的第一个地方,但非常感谢你回答我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-17
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
  • 2020-01-05
  • 1970-01-01
相关资源
最近更新 更多