我想返回一个逻辑向量,显示两个字符串数组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才有效-我不确定在此输入字符串上是否正确。
你可以写:
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)
如果A
和B
很大,并且您需要性能,则转换B
为Set
如下形式:
in(Set(B)).(A)
Run Code Online (Sandbox Code Playgroud)
(您花了创建时间集的一次性费用,然后查找会更快)
归档时间: |
|
查看次数: |
36 次 |
最近记录: |