How can I find the minimum value of an array, but evaluating the minimum through a key function?
In Python,
In [6]: min([-3, -1, 2], key=abs)
Out[6]: -1
How can I find the minimum value of an array, but evaluating the minimum through a key function?
In Python,
In [6]: min([-3, -1, 2], key=abs)
Out[6]: -1
julia> minimum(abs,[-2,1,3])
1
By the way, I found out this by using the “help” of the REPL, which is very useful:
julia> ? minimum
Uhm, I note that it is not the same! Sorry. I will keep searching
edit: at least in Julia you can write your own function if searching takes longer than that:
julia> function minbykey(x;by=identity)
min = by(x[firstindex(x)])
imin = 1
for i in firstindex(x)+1:lastindex(x)
y = by(x[i])
if y < min
min = y
imin = i
end
end
x[imin]
end
minbykey (generic function with 2 methods)
julia> minbykey([-2,-1,3],by=abs)
-1
As far as I know there is no built-in way right now, but 2-arg versions of findmin
and argmin
are coming in 1.7.
In the mean time:
minimumby(f, iter) = reduce(iter) do x, y
f(x) < f(y) ? x : y
end