julia - 在 julia 中从 [1,2,0,0,4,0] 中查找非零元素的索引并用它们创建一个数组

标签 julia

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

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/

相关文章:

macos - 安装 IJulia 时出错 : Homebrew and Nettle

arrays - 从元组向量到向量元组

julia - 两组各有 2 个向量的散点图

datetime - 如何初始化日期向量?

julia - 如何确定数组是否包含某个元素?

julia - 如何将异构数组 (Array{Any}) 提升为具有单一公共(public)类型元素的同构数组?

.jl 文件中的 Julia shell 模式

julia - 如何在 Julia 中保存文件

string - 如何在 Julia 中使用字符串命名数据框中的列?

matplotlib - Julia : type PyObject has no field set_yscale 中的 PyPlot 错误