查找给定列的第一个匹配项

时间:2016-08-09 19:51:32

标签: multidimensional-array julia

在文档中,我找到了一个函数findfirst,它能够返回第一个元素的索引,它等于给定的索引。

在我的情况下,我有一个矢量(或一维数组),我想找到第一列,它等于矢量。

我知道怎么做" hard"方式:findnext迭代第一行,然后检查整列。但是有一种更聪明的方式,这对我来说不是很明显吗?

2 个答案:

答案 0 :(得分:5)

假设m是您的矩阵,v是向量。 然后:

findfirst(c->view(m,:,c)==v,1:size(m,2))

如果找不到向量,则返回0,如果找到,则返回列号。转向基本元素访问可能会更快,但这也应该可以解决问题。

答案 1 :(得分:0)

这就是我现在的方式。它感觉不是很聪明。我仍然有信心有一种更好的方式,但我现在不能看到它。

来自C / C ++和Python,我看起来有些奇怪。我不知道朱莉娅的好味道。欢迎提出建议。

function findfirstcolumn(A, v)
    index = findfirst(A[1,:],v[1])
    found = false
    while index != 0 && found == false
        found = true
        for i = 2:size(v)[1]
            if A[i,index] != v[i]
                found = false
                break
            end
        end
    if found == true
        return index
    end
        index = findnext(A[1,:], v[1], index+1)
    end
    return 0
end