我正在使用 find
和 3D 矩阵 A
,如下所示:
julia> find(A.==1)
2-element Array{Int64,1}:
1
234
4567
Julia 将位置作为索引而不是索引数组提供给了我。例如,它返回 234 而不是 (1,2,1)。
我查看了 this question ,但我的矩阵非常大,形状为 (360,360,360)。我不能使用那里建议的方法。
我尝试研究它的索引模式并使用我编写的函数对其进行转换:
function cmf_p(matrix)
for a=1:length(matrix);
aa=matrix[a]
rd_u_m=ceil(aa/(360^2))
rd_d_m=floor(aa/(360^2)-1)
rd_d_t=(aa-rd_d_m*360)/360^2
rd_d_p=aa-rd_d_m*360^2-floor(rd_d_t)*360
println(rd_u_m);
println(ceil(rd_d_t)*360);
println(ceil(aa-rd_d_m*360^2-floor(rd_d_t)*360))
end
end
但它给了我错误的结果。
如何使用索引并将其转换到我想要的位置?
最佳答案
您正在寻找 ind2sub
:
julia> A = eye(3)
3x3 Array{Float64,2}:
1.0 0.0 0.0
0.0 1.0 0.0
0.0 0.0 1.0
julia> inds = find(A.==1.0)
3-element Array{Int64,1}:
1
5
9
julia> [ind2sub(size(A), ind) for ind in inds]
3-element Array{Any,1}:
(1,1)
(2,2)
(3,3)
关于arrays - 如何在 Julia 的矩阵中找到值的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41406451/