在matlab里面有find函数,可以查找数组里面的元素,julia里面有没有类似的内置函数?或者简单的用法
按 ?
进入 help mode
输入 find
回车
help?> find
search: findmin findmax findall findprev findnext findmin! findmax! findlast findfirst
Couldn't find find
Perhaps you meant bind, sind, fill, fd, fld, Cint, asind, in, inv, min, rand, sin or sinc
No documentation found.
Binding find does not exist.
然后看看上面那几个 find
开头的函数是不是符合需求
哈,他就是没有find这个函数~~~
以前有,这大概也反映出来MATLAB的某些缺点吧。大家觉得这个find不够explicit,所以后来把名字改了,至于改成了啥,你在上面那些find开头的函数里找找就知道了。
我把文档给你复制过来了。。。
help?> findall
search: findall findmax! findmax findlast
findall(f::Function, A)
Return a vector I of the indices or keys of A where f(A[I]) returns true. If there are
no such elements of A, return an empty array.
Indices or keys are of the same type as those returned by keys(A) and pairs(A).
Examples
≡≡≡≡≡≡≡≡≡≡
julia> x = [1, 3, 4]
3-element Array{Int64,1}:
1
3
4
julia> findall(isodd, x)
2-element Array{Int64,1}:
1
2
julia> A = [1 2 0; 3 4 0]
2×3 Array{Int64,2}:
1 2 0
3 4 0
julia> findall(isodd, A)
2-element Array{CartesianIndex{2},1}:
CartesianIndex(1, 1)
CartesianIndex(2, 1)
julia> findall(!iszero, A)
4-element Array{CartesianIndex{2},1}:
CartesianIndex(1, 1)
CartesianIndex(2, 1)
CartesianIndex(1, 2)
CartesianIndex(2, 2)
julia> d = Dict(:A => 10, :B => -1, :C => 0)
Dict{Symbol,Int64} with 3 entries:
:A => 10
:B => -1
:C => 0
julia> findall(x → x >= 0, d)
2-element Array{Symbol,1}:
:A
:C
──────────────────────────────────────────────────────────────────────────────────────
findall(A)
Return a vector I of the true indices or keys of A. If there are no such elements of
A, return an empty array. To search for other kinds of values, pass a predicate as the
first argument.
Indices or keys are of the same type as those returned by keys(A) and pairs(A).
Examples
≡≡≡≡≡≡≡≡≡≡
julia> A = [true, false, false, true]
4-element Array{Bool,1}:
true
false
false
true
julia> findall(A)
2-element Array{Int64,1}:
1
4
julia> A = [true false; false true]
2×2 Array{Bool,2}:
true false
false true
julia> findall(A)
2-element Array{CartesianIndex{2},1}:
CartesianIndex(1, 1)
CartesianIndex(2, 2)
julia> findall(falses(3))
0-element Array{Int64,1}
PS. CartesianIndex 这个类型正是Julia好用的地方
已经得到初步解决了,这是我写的代码
你想干啥…没看懂。如果是想获得index
i1, i2 = findfirst(b)
就可以获得单独的,整体肯定是 CartesianIndex
感觉查找条件可以写成lambda的样子,毕竟本质上这里的 b 就是lambda……
julia> a=[1 3 5 6]
1×4 Array{Int64,2}:
1 3 5 6
julia> findall(it->it == 3, a)
1-element Array{CartesianIndex{2},1}:
CartesianIndex(1, 2)
现在查找和索引是会了些了,呵呵
终于搞清楚怎么获取数字坐标了,列向量返回的坐标索引index是数字
这样更简洁,但是1.0版本可以使用此函数,0.6.4版本是不行的。