加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

关于Julia中矢量/矢量的行为

发布时间:2020-12-15 08:27:11 所属栏目:Java 来源:网络整理
导读:3 / [2; 2]给出 1×2 LinearAlgebra.Transpose{Float64,Array{Float64,1}}: 0.75 0.75 而3./ [2; 2]给出了 2-element Array{Float64,1}: 1.5 1.5 第二个很容易理解.它广播3并执行元素明智的划分.但是,第一次操作的行为背后的原因是什么呢?我假设它采用矢量
3 / [2; 2]给出

1×2 LinearAlgebra.Transpose{Float64,Array{Float64,1}}:
 0.75  0.75

而3./ [2; 2]给出了

2-element Array{Float64,1}:
 1.5
 1.5

第二个很容易理解.它广播3并执行元素明智的划分.但是,第一次操作的行为背后的原因是什么呢?我假设它采用矢量的总和,即2×1,执行3×4的除法,并将其广播到1×2转置矢量.我可以接受将矢量的总和进行除法,但为什么要进行转置?或者为什么不返回一个标量?

解决方法

它只是给出右侧操作数的伪逆.

julia> ?/
...  
Right division operator: multiplication of x by the inverse of y on the right.

虽然一见钟情似乎令人惊讶,但它实际上是自然行为. rowvector * columnvector给出一个标量,因此标量除以列向量应该给出一个行向量,就是这种情况.请注意,RowVector已在1.0中删除,您获得的实际上是Transpose表示的行向量.

您可以编写@less 1 / [2; 2]来查看实际发生的情况.

另外请看一下this GitHub issue以了解一些用例的行为和this discourse topic.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读