首页 > 解决方案 > 创建一个掩码数组,其中“1”位于给定数组的最大值索引处

问题描述

给定一个矩阵A = [1 5 3; 4 2 6]。如何创建一个新的掩码矩阵,其中1值在列最大值索引处mask = [0 1 0; 1 0 1]。如何在不改变任何创建的数组的情况下在 julia 中执行此操作。

有了突变,我正在按照以下方式进行操作。

maxval, maxind = findmax(A, dims=1)
mask = zeros(size(A))
mask[maxind] .= 1

标签: julia

解决方案


你所拥有的确实没有什么问题(尽管我可能会使用falses而不是zeros)。您也可以使用广播,但我希望它具有类似的性能:

julia> A = [1 5 3; 4 2 6]
2×3 Array{Int64,2}:
 1  5  3
 4  2  6

julia> A .== maximum(A, dims=1)
2×3 BitArray{2}:
 0  1  0
 1  0  1

(请注意,与 Python 不同,我们区分矩阵和向量的向量;您像后者一样编写它们)


推荐阅读