在Julia中,您可以使用findmax
或indmax
查找矩阵中最大条目的索引.但是,如果您有多个具有此最大值的条目,则会获得第一个的索引.如何获取矩阵中所有最大值条目的索引?
如果这不是瓶颈
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
需要一次迭代.