相当于任意函数的点前缀?

时间:2015-02-07 20:09:29

标签: julia

Julia允许我使用.对数组/矩阵进行元素二元运算符:

[1 2 3] .+ [3 2 1]
[1 2 3] .> [3 2 1]

是否有一种标准方法可以将一个任意函数f元素应用于一对数组?

1 个答案:

答案 0 :(得分:6)

如果您只想将二进制函数应用于两个列表中的每对值,可以使用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