假设我们有一个这样定义的数组:
a=[1 2; 3 4; 5 5; 7 9; 1 2];
在 Matlab 中,我们可以通过以下方式找到最大值:
[x y] = max(a)
x =
7 9
在 Julia 中,我们可以使用:
a=[1 2; 3 4; 5 5; 7 9; 1 2]
findmax(a,1)
返回:
([7 9],
[4 9])
但是,我不仅对找到这两列的 [7 9] 感兴趣,还对它们在每列中的相对位置感兴趣,例如 [4, 4]。当然,我可以写更多的代码行,但是我可以直接用findmax来做吗?
最佳答案
findmax
返回的第二个矩阵是整个数组中最大值位置的线性索引。你想要每一列中的位置;为此,您可以使用 ind2sub
将线性索引转换为下标。 .然后下标元组的第一个元素是您的行索引。
julia> vals, inds = findmax(a, 1)
(
[7 9],
[4 9])
julia> map(x->ind2sub(a, x), inds)
1×2 Array{Tuple{Int64,Int64},2}:
(4,1) (4,2)
julia> map(x->ind2sub(a, x)[1], inds)
1×2 Array{Int64,2}:
4 4
关于 Julia :沿数组中的列找到最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43942166/