擅长:python、mysql、java
<p>您可以将<code>True</code>{<cd2>}布尔的索引(或掩码)作为选择条件传递给ndarray。使用显示的方法获取与原点的距离。只需将其展开,即可在云阵列上按行操作。参见<a href="https://numpy.org/doc/stable/reference/generated/numpy.sum.html" rel="nofollow noreferrer">sum documentation</a>并在<code>axis</code>下查看。您需要每一行的总和,因为您已经将数据存储为一行X,Y,Z,I。如果在将来对其进行转置,请对列使用axis=0</p>
<pre><code>dist = np.sqrt(np.sum(np.square(cloud[:,0:2]), axis = 1))
</code></pre>
<p>这将为您提供与点云中的点数相同的距离向量。现在使用以下内容制作索引:</p>
<pre><code>index = dist <= 10
</code></pre>
<p>如果打印此索引,您将看到一系列<code>True</code>{<cd2>}。现在进行过滤</p>
<pre><code>filtered_cloud = cloud[index,:]
</code></pre>
<p>当然,这是最丑陋的一行。如果你这样做…请发表评论,让人们知道你做了什么</p>
<pre><code>filtered_cloud = cloud[np.sqrt(np.sum(np.square(cloud[:,0:2]), axis = 1)) <= 10, :]
</code></pre>
<p>奇怪的是,为什么只使用x和y表示距离</p>