等效于任意函数的点前缀?
Equivalent of the dot prefix for an arbitrary function?
Julia 允许我在 arrays/matrices 上使用 .
:
进行元素二元运算符
[1 2 3] .+ [3 2 1]
[1 2 3] .> [3 2 1]
是否有一种标准方法可以将任意函数 f
按元素应用于一对数组?
如果您只想对两个列表中的每对值应用二元函数,您可以使用 map
:
f(x,y) = 2x - y^2
julia> map(f, [1, 2, 3], [3, 2, 1])
3-element Array{Int64,1}:
-7
0
5
.+
和 .>
运算符还具有广播单例维度的附加行为,如下所示:
julia> [1, 2, 3] .+ [-1 -2 -3]
3x3 Array{Int64,2}:
0 -1 -2
1 0 -1
2 1 0
julia> rand(3,4) .+ [1, 2, 3]
3x4 Array{Float64,2}:
1.73798 1.84132 1.12923 1.30192
2.10961 2.17835 2.52779 2.3028
3.16457 3.04659 3.67604 3.08869
julia> rand(3,4) .+ [1 2 3 4]
3x4 Array{Float64,2}:
1.40294 2.31384 3.34001 4.60027
1.13289 2.99275 3.50606 4.51049
1.31486 2.7585 3.64655 4.59647
如果你也想要这种行为,你可以使用broadcast
函数:
julia> broadcast(f, [1 2 3], [3, 2, 1])
3x3 Array{Int64,2}:
-7 -5 -3
-2 0 2
1 3 5
Julia 允许我在 arrays/matrices 上使用 .
:
[1 2 3] .+ [3 2 1]
[1 2 3] .> [3 2 1]
是否有一种标准方法可以将任意函数 f
按元素应用于一对数组?
如果您只想对两个列表中的每对值应用二元函数,您可以使用 map
:
f(x,y) = 2x - y^2
julia> map(f, [1, 2, 3], [3, 2, 1])
3-element Array{Int64,1}:
-7
0
5
.+
和 .>
运算符还具有广播单例维度的附加行为,如下所示:
julia> [1, 2, 3] .+ [-1 -2 -3]
3x3 Array{Int64,2}:
0 -1 -2
1 0 -1
2 1 0
julia> rand(3,4) .+ [1, 2, 3]
3x4 Array{Float64,2}:
1.73798 1.84132 1.12923 1.30192
2.10961 2.17835 2.52779 2.3028
3.16457 3.04659 3.67604 3.08869
julia> rand(3,4) .+ [1 2 3 4]
3x4 Array{Float64,2}:
1.40294 2.31384 3.34001 4.60027
1.13289 2.99275 3.50606 4.51049
1.31486 2.7585 3.64655 4.59647
如果你也想要这种行为,你可以使用broadcast
函数:
julia> broadcast(f, [1 2 3], [3, 2, 1])
3x3 Array{Int64,2}:
-7 -5 -3
-2 0 2
1 3 5