Julia使用findmax函数返回整个条目索引,而不是CartesianIndex

假如我有一个矩阵A = [3 4; 1 2];
使用findmax(A)返回的是
julia> findmax(A,dims=1)
([3 4], CartesianIndex{2}[CartesianIndex(1, 1) CartesianIndex(1, 2)])

我希望能够返回[3 4]在整个A中条目的索引,而不是 CartesianIndex,请问怎么写代码?

如果 A = [3 1; 1 2]; 你想返回什么

([3 4].[1,3]) [3 4]是每一列的最大值[1,3]分别是3和4在整个A中条目的索引。感谢感谢!!

这里的实际问题是如何将 Cartesian 多维下标转换为 Linear 线性下标:

julia> vals, inds = findmax(A,dims=1)
([3 4], CartesianIndex{2}[CartesianIndex(1, 1) CartesianIndex(1, 2)])

julia> LinearIndices(A)[inds]
1×2 Matrix{Int64}:
 1  3

CartesianIndex 与 Int 一样都可以作为索引使用,所以如果不是确实需要知道它的线性下标的话,其实没必要做这么一个转换。

2赞

备案号:京ICP备17009874号-2