矩阵点除向量的不一致

当我在使用./进行矩阵除向量时,出现了奇怪的现象,如下:

julia> z = [1 2  3;
                 4 5 6;
                 7 8 9];
julia> z ./ z[1, :]
3×3 Matrix{Float64}:
 1.0      2.0      3.0
 2.0      2.5      3.0
 2.33333  2.66667  3.0
julia>z ./ z[:, 1]
3×3 Matrix{Float64}:
 1.0  2.0      3.0
 1.0  1.25     1.5
 1.0  1.14286  1.28571

为什么上面z ./ z[1, :]结果的第一行不是等于1,这个操作具体含义是什么呢?

不管是z[1, :]还是z[:, 1],得到的都是vector,julia默认的广播都是在后面加维度,所以第一个广播完是[1; 2; 3],如果你想要[1 2 3;],应该是z[1:1, :]

./ 表示广播,大致意思是每个元素除以每个元素,你试试用 /

刚好前几天写了一个广播的规则的小介绍,有兴趣可以看看