在R
中,函数outer
在结构上允许您获取两个向量x
和y
的外积,同时为实际应用的函数提供了多个选项到每个组合。例如,outer(x,y,'-')
创建x
和y
之间元素差异的“外部产品”矩阵。朱莉娅有类似的东西吗?
答案 0 :(得分:7)
广播是在添加.
时发生的Julia操作。当两个容器具有相同的尺寸时,它是元件操作。示例:如果x.*y
,size(x)==size(y)
是元素方面的。但是,当形状不匹配时,广播才真正生效。如果其中一个是行向量而其中一个是列向量,则输出将为2D,out[i,j]
匹配{0}行的i
行与j
行向量。这意味着x .* y
是编写外部产品的一种特殊方式,如果一行和另一行是列向量。
一般来说,广播正在做的是:
当尺寸变大时,这是浪费的,因此Julia提供了broadcast(),它扩展了数组参数中的单个维度,以匹配其他数组中的相应维度,而不使用额外的内存
(这是来自the Julia Manual)
但是这推广到所有其他二元运算符,因此x .- y'
是您正在寻找的。