zty*_*tyh 4 vector broadcast division julia
3/[2;2]给出
1\xc3\x972 LinearAlgebra.Transpose{Float64,Array{Float64,1}}:\n 0.75 0.75\nRun Code Online (Sandbox Code Playgroud)\n\n同时3 ./[2;2]给出
2-element Array{Float64,1}:\n 1.5\n 1.5\nRun Code Online (Sandbox Code Playgroud)\n\n第二个很容易理解。它广播3并执行元素明智的划分。但是第一个操作表现得像现在这样,背后的原因是什么?我假设它采用向量的总和,即 2x1,执行 3 除以 4 并将其广播到 1x2 转置向量。我可以接受取向量之和来执行除法,但为什么要转置呢?或者为什么不只返回一个标量呢?
它只是给出右侧操作数的伪逆。
julia> ?/
...
Right division operator: multiplication of x by the inverse of y on the right.
Run Code Online (Sandbox Code Playgroud)
虽然乍一看似乎令人惊讶,但实际上这是很自然的行为。行向量*列向量给出一个标量,因此标量除以列向量应该给出行向量,就是这种情况。请注意,RowVector在 1.0 中已被删除,您得到的实际上是用 表示的行向量Transpose。
您可以写信@less 1 / [2;2]看看实际发生了什么。
另请查看此 GitHub 问题,以更多地了解该行为以及此讨论主题的某些用例。