如何生成一个在某个位置有 1 的向量?

0 julia

我有一个带有升序数字的向量,例如(2,3,6,10)。现在我需要生成第二个向量,其中被调用项中的所有条目均为 1,其他所有条目均为 0,因此 (0,1,1,0,0,1,0,0,0,1)。

我的尝试是:

原始数组

A = [2, 3, 6, 10]

创建一个新的零数组,其中最大值为 A

B = 零(整数,最大值(A))

将 A 中指定索引处的元素设置为 1

B[A] .= 1

问题是这会导致一个由 1 组成的四维向量,而不是由 1 和 0 组成的 10 维向量。我唯一的另一个想法是我想避免的 for 循环

mca*_*ott 5

我想你已经解决了这个问题。广播操作执行您想要的操作,但返回其他内容。

julia> A = [2, 3, 6];

julia> B = zeros(Int, maximum(A));

julia> B[A] .= 1
3-element view(::Vector{Int64}, [2, 3, 6]) with eltype Int64:
 1
 1
 1

julia> B
6-element Vector{Int64}:
 0
 1
 1
 0
 0
 1
Run Code Online (Sandbox Code Playgroud)