gpt4 book ai didi

matrix - Julia :在矩阵中查找行

转载 作者:行者123 更新时间:2023-12-02 11:29:28 26 4
gpt4 key购买 nike

使用 Julia,我想确定一行是否位于矩阵中以及(如果适用)该行位于矩阵中的位置。例如,在 Matlab 中,可以使用 ismember 完成此操作:

a = [1 2 3];
B = [3 1 2; 2 1 3; 1 2 3; 2 3 1]
B =

3 1 2
2 1 3
1 2 3
2 3 1

ismember(B, a, 'rows')
ans =

0
0
1
0

由此,我们可以看到a位于B的第3行。 Julia 中是否有类似的函数可以完成此任务?

最佳答案

您还可以通过简单地测试相等性 (.==) 来使用数组广播,而不使用推导式:

all(B .== a, dims=2)

这给你:

4x1 BitMatrix:
0
0
1
0

然后您可以在此数组上使用 findall:

findall(all(B .== a, 2))

但是,这会为您提供 CartesianIndex 对象的向量:

1-element Vector{CartesianIndex{2}}:
CartesianIndex(3, 1)

因此,如果您希望查找具有 a 中定义的值的多行,您可以:

  1. 通过仅获取每个 CartesianIndex 中的行索引来简化此向量:

    [cart_idx[1] for cart_idx in findall(all(B .== a, 2))]
  2. 或将一维BitMatrix传递给findall(按照Shep Bryan在评论中的建议):

    findall(all(B .== a, dims=2)[:, 1])

无论哪种方式,你都会得到列索引的整数向量:

1-element Vector{Int64}:
3

关于matrix - Julia :在矩阵中查找行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32707099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com