3
在Julia中,您可以使用findmax
或indmax
查找矩陣中最大條目的索引。但是,如果您有多個條目具有此最大值,則會得到第一個的索引。 如何獲得矩陣中所有最大值條目的索引?Julia:查找所有最大值的索引
在Julia中,您可以使用findmax
或indmax
查找矩陣中最大條目的索引。但是,如果您有多個條目具有此最大值,則會得到第一個的索引。 如何獲得矩陣中所有最大值條目的索引?Julia:查找所有最大值的索引
如果這不是一個瓶頸
A = [1, 2, 3, 3, 3]
A_max = maximum(A)
find(a->a==A_max, A)
會給你你需要的東西,但它確實走在陣列上的兩倍。
你也可以使用理解。該數組將迭代兩次。
v = [1, 2, 3, 3, 3]
maxval = maximum(v)
positions = [i for (i, x) in enumerate(v) if x == maxval]
如果性能是至關重要的,然後下面的算法可能工作:需要
function findallmax(arr)
max_positions = Vector{Int}()
min_val = typemin(eltype(arr))
for i in eachindex(arr)
if arr[i] > min_val
min_val = arr[i]
empty!(max_positions)
push!(max_positions, i)
elseif arr[i] == min_val
push!(max_positions, i)
end
end
max_positions
end
一個迭代。