arrays - 如何在 Julia 的矩阵中找到值的位置?

标签 arrays matrix julia

我正在使用 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/

相关文章:

java - 语句打印在错误的行(Java Token 问题)

python - 使用双参数函数将两个 numpy 数组组合成矩阵

c++ - 为类中的动态数组重载 cout 运算符

python - 创建列表列表。修改列表中的元素

r - Julia 中有类似 R 的子集函数吗?

metaprogramming - 函数模板的宏 : escaping issues

julia - Julia 中的并行计算和错误分配的核心数

javascript - 如何在纯JavaScript中通过值获取数组的多个索引(值精确匹配)

java - 将big int数组部分存储在数据库中,以减少java中的内存

javascript - 在js中按条件将变量设置为数组的子集