【问题标题】:Vectorized multiplication: Multiply two vectors in Julia, element-wise向量化乘法:在 Julia 中将两个向量相乘,逐元素
【发布时间】:2019-07-13 16:16:13
【问题描述】:

我决定潜入 Julia 并碰壁;快。

我正在尝试复制一个简单的操作,在 python numpy 中如下所示

a = numpy.array([1,2,3])
b = numpy.array([1,2,3])
a*b
[output]: [1,4,9]

换句话说,“[1,4,9]”是我期望的输出。

我在 Julia 中尝试了以下方法:

a = [1,2,3]
b = [1,2,3]
a*b
[output]: MethodError: no method matching *(::Array{Int64,1}, ::Array{Int64,1})

或在尝试明智之后:

a = [1,2,3]
b = [1,2,3]'
a*b
[output]: 3×3 Array{Int64,2}:
 1  2  3
 2  4  6
 3  6  9

我知道这似乎是一个基本问题,但我的谷歌搜索似乎不是我今天最好的和/或 stackoverflow 可以使用这个问题和答案;)

感谢您的帮助和指点!

最好的

【问题讨论】:

    标签: arrays julia vectorization vector-multiplication


    【解决方案1】:

    朱莉娅需要一个 .在运算符或函数调用前面表示您想要元素乘法而不是将向量作为一个单位的运算。这称为广播数组:

     julia> a = [1,2,3]          
     3-element Array{Int64,1}:   
     1                          
     2                          
     3                          
    
     julia> b = [1,2,3]          
     3-element Array{Int64,1}:   
     1                          
     2                          
     3                          
    
     julia> a .* b               
     3-element Array{Int64,1}:   
     1                          
     4                          
     9                          
    

    【讨论】:

    • 哇,谢谢。我在某个时候有那个点/点,因为我已经看到了。但我不明白其中的含义;)谢谢!
    【解决方案2】:

    我刚刚找到了一个解决方案,虽然肯定不是最优的,因为它会生成一个点积,然后选择对角线....进行大量计算!\

    use LinearAlgebra
    a = [1,2,3]
    b = [1,2,3]
    c = a * b'
    diag(c)
    

    我很确定有更好的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 2018-02-15
      • 1970-01-01
      相关资源
      最近更新 更多