You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用NumPy实现三维点云指定坐标范围的过滤操作

报错原因

  • 你的verts数组形状为(h, w, 3),最后一维依次存储x、y、z三个坐标值。原代码直接对整个verts数组做范围判断,得到的布尔数组形状也是(h, w, 3),沿axis=0做np.all后得到的布尔索引形状为(w, 3),和原数组的维度完全不匹配,因此触发维度不匹配的索引错误。
  • 逻辑层面也存在问题:原写法会要求点的x、y、z三个坐标全部落在[xmin, xmax]范围内,不符合你只筛选x、y坐标范围的需求。
  • 额外注意:NumPy数组没有length属性,统计元素数量需要用size属性,统计点数量可以看数组对应维度的shape值。

正确实现代码

import numpy as np

verts = np.asarray(points.get_vertices(2)).reshape(h, w, 3)
texcoords = np.asarray(points.get_texture_coordinates(2))

xmin = -0.25
xmax = 0.25
ymin = 0.0
ymax = 1.0

# 分别提取x、y坐标做范围判断,得到的布尔数组形状为(h, w),和前两维匹配
x_in_range = (verts[..., 0] >= xmin) & (verts[..., 0] <= xmax)
y_in_range = (verts[..., 1] >= ymin) & (verts[..., 1] <= ymax)

# 合并两个条件,得到符合要求的点的布尔索引
in_idx = x_in_range & y_in_range

# 索引取值,得到的inbox形状为(符合条件的点数量, 3)
inbox = verts[in_idx]

# 打印总点数和筛选后的点数
print(f"总点数: {verts.shape[0] * verts.shape[1]}, 筛选后点数: {inbox.shape[0]}")

内容的提问来源于stack exchange,提问作者bluelemonade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:45:01