当前位置:  开发笔记 > 人工智能 > 正文

朱莉娅:找到所有极大值的指数

如何解决《朱莉娅:找到所有极大值的指数》经验,为你挑选了2个好方法。

在Julia中,您可以使用findmaxindmax查找矩阵中最大条目的索引.但是,如果您有多个具有此最大值的条目,则会获得第一个的索引.如何获取矩阵中所有最大值条目的索引?



1> pkofod..:

如果这不是瓶颈

A = [1, 2, 3, 3, 3]
A_max = maximum(A)
find(a->a==A_max, A)

会给你你需要的东西,但它确实会重复两次.


可以在v1.1.0的文档中[不再找到](https://docs.julialang.org/en/v1/search/?q=find)。

2> 小智..:

你也可以使用理解.该数组将被迭代两次.

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

需要一次迭代.

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有