如何解决在3D numpy数组中搜索多个1D numpy数组
我从表面扫描中得到了一个stl文件。由此,我得到了每个三角形的3D数组,这些三角形具有3个点以及x,y,z坐标。
现在要查找与具有点x,y,z坐标的另一个2D数组(具有2个点)相同的所有三角形(也可以是列表,格式并不那么重要)。
我的3D阵列的示例数据为
Triangle= np.array([[[0,1,1],[1,2]],[[0,[0,1]],[[3,[3,[2,[[2,2],[[1,2,3],3,3]],1]]])
要点
points = np.array([[1,1]])
解决方法
让我们尝试广播以比较所有三角形和所有点:
compare = (Triangle[:,:,None,:] == points[None,...])
# `all` check if all the coordinates to be equal,# `sum` counts the equal points
mask = compare.all(axis=-1).sum(axis=(-2,-1)) >=2
Triangle[mask]
输出:
array([[[0,1,1],[1,2]],[[1,2,3],[0,1]],[[0,3,2],[2,[[2,[3,3]],1]]])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。