python象限判断_将点 Cloud 划分为python中的象限

在Python中,对于一个30个点的3维numpy数组,通过将点云质心作为参照,可以将其划分为八个象限。原始代码使用循环和条件判断实现,虽然有效但不够简洁。为了提高效率和可读性,可以考虑使用numpy的高级索引来简化代码。寻求更优雅的解决方案。
摘要由CSDN通过智能技术生成

假设我在3个维度中有一个30个点的数组,在python中被转换为numpy数组:

import numpy as np

b = np.round(np.random.random((30,3))*20)

b = b - b.mean(axis=0)

我想把这些点分成八个象限,参考点 Cloud 的“质心” . 我可以这样做:

for a in (b, -b):

q_list = a[a[:,0]>0.][a[a[:,0]>0.][:,1]>0][a[a[:,0]>0.][a[a[:,0]>0.][:,1]>0][:,2]>0]

quad_list.append(q_list * sign)

q_list = a[a[:,0]>0.][a[a[:,0]>0.][:,1]>0][a[a[:,0]>0.][a[a[:,0]>0.][:,1]>0][:,2]<=0]

quad_list.append(q_list * sign)

q_list = a[a[:,0]>0.][a[a[:,0]>0.][:,1]<=0][a[a[:,0]>0.][a[a[:,0]>0.][:,1]<=0][:,2]>0]

quad_list.append(q_list * sign)

q_list = a[a[:,0]>0.][a[a[:,0]>0.][:,1]<=0][a[a[:,0]>0.][a[a[:,0]>0.][:,1]<=0][:,2]<=0]

quad_list.append(q_list * sign)

sign *= -1

当然,这很好用 . 它返回一个包含八个位置坐标数组的列表,每个位置坐标仅包含位于特定象限中的点 . 但是我觉得应该有更清晰,更简洁的方法来处理这个问题 . 建议?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值