朱莉娅:如何在另一个字符串数组中查找字符串的位置(在一个字符串数组中)

For*_*aRS 3 indexing julia

我想返回一个逻辑向量,显示两个字符串数组A和B的成员字符串的位置。

在Matlab中,这将是

A = ["me","you","us"]
B = ["me","us"]
myLogicalVector = ismember(A,B)

myLogicalVector =

  1×3 logical array

   1   0   1
Run Code Online (Sandbox Code Playgroud)

如何在Julia中实现这一目标?

我试过了

myLogicalVector = occursin.(A,B)
myLogicalVector = occursin(A,B)
Run Code Online (Sandbox Code Playgroud)

似乎仅当两个输入字符串数组的长度相同或一个字符串为标量时,insidesin才有效-我不确定在此输入字符串上是否正确。

Bog*_*ski 5

你可以写:

julia> in(B).(A)
3-element BitArray{1}:
 1
 0
 1
Run Code Online (Sandbox Code Playgroud)

类似操作的更多详细版本(请注意,除了第一种情况之外,所有情况下数组的类型都不同):

julia> in.(A, Ref(B))
3-element BitArray{1}:
 1
 0
 1

julia> [in(a, B) for a in A]
3-element Array{Bool,1}:
 1
 0
 1

julia> map(a -> in(a, B), A)
3-element Array{Bool,1}:
 1
 0
 1

julia> map(a -> a in B, A)
3-element Array{Bool,1}:
 1
 0
 1

julia> [a in B for a in A]
3-element Array{Bool,1}:
 1
 0
 1
Run Code Online (Sandbox Code Playgroud)

如果AB很大,并且您需要性能,则转换BSet如下形式:

in(Set(B)).(A)
Run Code Online (Sandbox Code Playgroud)

(您花了创建时间集的一次性费用,然后查找会更快)