gpt4 book ai didi

python - 为表示 3D 点坐标的两个 2D 数组创建 bool 掩码

转载 作者:行者123 更新时间:2023-12-04 07:45:34 25 4
gpt4 key购买 nike

我有两个数组,A 是 (m, 3) -shape 数组,B 是 (n, 3) -shape 数组与 m > n (这个条件总是满足的。实际上m至少是n的3倍)。这两个数组如下所示:

A = [[x1  y1  z1]                    |  B = [[u1  v1  w1] 
[x2 y2 z2] | [u2 v2 w2]
... | ...
... | [un vn wn]]
... |
... |
[xm ym zm]] |
(u, v, w) (x, y, z) 是 3D 点的坐标。 B 中的所有点都存在于 A 中(其中包含的点较多,大部分不在 B 中)。需要注意的一点是B中点的出现顺序是 不一定在 A 中相同,这意味着,为了说明起见, [u1 v1 w1] 可以在位置(行)256, [u2 v2 w2] 在 15, [u3 v3 w3] 在 569001 等
另一个重要的细节:坐标是浮点数,如果两个点对应,则 uk = xj, vk = yj, wk = zj (意味着这些点有准确的位置,而不是彼此靠近)。
我想创建一个大小与 A 相同的 bool 掩码,稍后将在代码中使用,以便 mask_A = [True, False, False, False, True,..., False]哪里 True表示该点也存在于 B 中,且 False当该点未出现在 B 中时放置。
我也想做 没有任何循环 ,因为尺寸很大,而且创建蒙版的过程要重复多次。只要能快速完成工作,更改数组的类型(将它们转换为列表、集合等等)都没有问题。
我找到了多个处理掩码和二维数组的答案,但没有一个回答我的问题。
谢谢你。

最佳答案

由于它们都是 numpy 数组,您可以使用函数 numpy.intersect1d

_, indices_ar1, _ = numpy.intersect1d(ar1, ar2, assume_unique=False, return_indices=True)
我不知道你的申请,但也许这对你来说已经足够了。如果不是,您只需将这些索引转换为二进制掩码。

关于python - 为表示 3D 点坐标的两个 2D 数组创建 bool 掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67212333/

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