Julia :沿数组中的列找到最大值

标签 julia

假设我们有一个这样定义的数组:

a=[1 2; 3 4; 5 5; 7 9; 1 2];

在 Matlab 中,我们可以通过以下方式找到最大值:
 [x y] = max(a)
   x =
     7     9

在 Julia 中,我们可以使用:
  a=[1 2; 3 4; 5 5; 7 9; 1 2]
  findmax(a,1)

返回:
 ([7 9],

  [4 9])

但是,我不仅对找到这两列的 [7 9] 感兴趣,还对它们在每列中的相对位置感兴趣,例如 [4, 4]。当然,我可以写更多的代码行,但是我可以直接用findmax来做吗?

最佳答案

findmax 返回的第二个矩阵是整个数组中最大值位置的线性索引。你想要每一列中的位置;为此,您可以使用 ind2sub 将线性索引转换为下标。 .然后下标元组的第一个元素是您的行索引。

julia> vals, inds = findmax(a, 1)
(
[7 9],

[4 9])

julia> map(x->ind2sub(a, x), inds)
1×2 Array{Tuple{Int64,Int64},2}:
 (4,1)  (4,2)

julia> map(x->ind2sub(a, x)[1], inds)
1×2 Array{Int64,2}:
 4  4

关于 Julia :沿数组中的列找到最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43942166/

相关文章:

julia - 为什么 Julia 开发者将 `NA` 重命名为 `missing`

struct - Julia:我们可以对不可变结构类型中的对象进行多少更改?

dynamic - 如何使用 Julia 1.5 在运行时动态加载模块(或脚本)

julia - 如何将矩阵的切片放入具有 SMatrix 类型内部结构的 3D 数组中?

arrays - Julia:更快的矩阵计算

julia - 如何确定 JuMP 中的 Gurobi 或求解器版本

julia - 在 Julia 中修改包中的函数

julia - 带有命令行选项的 Julia 可移植 shebang 行?

machine-learning - 高效计算SVM对偶损失

julia - 在 Julia GPU 代码中生成泊松分布随机数的正确方法?