在朱莉娅的[1,2,0,0,4,0]中找到非零元素的索引,并用它们创建一个Arrray

Pau*_*Pau 1 julia

我知道有一个函数可以做到这一点,例如:

A = [1,2,0,0,4,0]
find(A)

 3-element Array{Int64,1}:
 1
 2
 5
Run Code Online (Sandbox Code Playgroud)

我试图按照自己的方式去做,但是,我被困在这里

for i=1:endof(A)
   if A[i] != 0
      []
   end
end
Run Code Online (Sandbox Code Playgroud)

提前致谢.

DNF*_*DNF 5

这是另一种选择:

function myfind(c)
    a = similar(c, Int)
    count = 1
    @inbounds for i in eachindex(c)
        a[count] = i
        count += (c[i] != zero(eltype(c)))
    end
    return resize!(a, count-1)
end
Run Code Online (Sandbox Code Playgroud)

它实际上比find我测试的所有情况都要好,但是对于你发布的非常小的示例矢量,差异可以忽略不计.避免分支和动态增长索引数组可能有一些性能优势.