有一个函数h(x) = ([1, x]' * [2, 3])[1]
假设我想绘制它并获得 X
和 Y
。一种可能的方法是执行以下操作
X = [1 2 3]
Y = [h(xi) for xi in X]
但是,似乎也可以在 Julia 中使用元素运算符来执行相同的操作?
不幸的是,在函数前面加上点 .h(X)
不起作用。
最佳答案
更新:f.(x)
语法已合并并在 julia v0.5 中可用,请参阅 the document或WIP .
@vectorize_1arg在 julia's Base 中,可以使您的函数可以接受数组。用这个宏包裹你的 h
可能会解决问题。
这是来自 julia document 的示例
julia> square(x) = x^2
square (generic function with 1 method)
julia> @vectorize_1arg Number square
square (generic function with 4 methods)
julia> methods(square)
# 4 methods for generic function "square":
square{T<:Number}(::AbstractArray{T<:Number,1}) at operators.jl:380
square{T<:Number}(::AbstractArray{T<:Number,2}) at operators.jl:381
square{T<:Number}(::AbstractArray{T<:Number,N}) at operators.jl:383
square(x) at none:1
julia> square([1 2 4; 5 6 7])
2x3 Array{Int64,2}:
1 4 16
25 36 49
如果您正在寻找更“优雅”的方法,here is a discussion关于为这个问题添加新的语法。
关于julia - 如何在 Julia 中按元素应用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36349007/