我知道有一个函数可以做到这一点,例如:
A = [1,2,0,0,4,0]
find(A)
3-element Array{Int64,1}:
1
2
5
我正在尝试以自己的方式进行,但是,我被困在这里
for i=1:endof(A)
if A[i] != 0
[]
end
end
提前致谢。
最佳答案
这是一种选择:
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
它实际上跑赢了
find
对于我测试的所有案例,尽管对于您发布的非常小的示例向量,差异可以忽略不计。避免分支和动态增长索引数组可能有一些性能优势。
关于julia - 在 julia 中从 [1,2,0,0,4,0] 中查找非零元素的索引并用它们创建一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42232411/