Julia中多维数组的最大值和索引

时间:2018-02-15 02:21:10

标签: julia

我试图在Julia中找到多维数组中该值的最大值和索引。代码如下:

temp = 0
final_A = 1
final_B = 1
final_C = 1
final_D = 1
length = 10

function maxis(final, temp, final_A, final_B, final_C, final_D, final)

for A in 1:length
  for B in 1:length
    for C in 1:length
      for D in 1:length

        final[A, B, C, D] = A + B + C + D

        if final[A, B, C, D] > temp
           temp = final[A, B, C, D]
           final_A = A
           final_B = B
           final_C = C
           final_D = D

        end


      end
    end
  end
end

end

谢谢

1 个答案:

答案 0 :(得分:4)

更新:注意,对于Julia v0.7 +,indmax已被弃用,而不是argmax,对于维度大于1的数组,argmax返回CartesianIndex。这意味着不再需要使用ind2sub,实际上由于这个原因,这个函数也被弃用了。

原始回答:回答问题的一些示例代码:

julia> x = rand(1:10, 3, 4, 2)
3×4×2 Array{Int64,3}:
[:, :, 1] =
 3  5  3  3
 1  4  9  1
 1  5  9  8

[:, :, 2] =
 2  4  7  3
 1  4  2  4
 5  5  5  5

julia> maximum(x)
9

julia> indmax(x) #returns the linear index
8

julia> ind2sub(x,indmax(x)) #returns the cartesian index as tuple of Int
(2, 3, 1)

这只会在重复最大值的情况下找到第一个最大值的索引。但是,您发布的示例代码似乎也是如此。

如果您正在使用笛卡尔指数,请注意?CartesianIndex可能是有用的。