假如我有一个矩阵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 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 一样都可以作为索引使用,所以如果不是确实需要知道它的线性下标的话,其实没必要做这么一个转换。