我试图在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
谢谢
答案 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
可能是有用的。