python - 如何在python中导出规则网格的一些特定点
问题描述
我有坐标点 (x
和y
) 并想重新排列它们。所有点都存储在一个列表中。List 有几个数组,并且数组有唯一的x
值:
sp_arr=[np.array([[1., 8.]]), np.array([[2., 8.], [2., 9.]]), \
np.array([[3., 8.], [3., 9.], [3., 10.]]),\
np.array([[4., 8.], [4., 9.], [4., 10.]]),\
np.array([[5., 9.], [5., 10.]]), np.array([[6., 9.], [6., 10.]]),\
np.array([[7., 10.]]), np.array([[8., 10.]])]
如果数组的长度小于1
,我什么也不做。我上传了一个无花果来可视化我想要的东西。图有三个矩形,我想根据它们重新排列我的点。数组长度的变化对我来说是最重要的信号。它从第二个数组变为第三个数组。所以,我需要提取所有较短(第二个)数组2
的行和第三个(较短数组的长度)行。我提取第三个数组的第一2
行,因为y
第三个(较长)数组中的平均值高于较短的数组。如果它更少,我会导出最后2
一行。
矩形 2 包含长度最大的数组。
从第四到第五个数组,长度变化(矩形3)。我再次保留所有较短数组的行(第五和第六)和2
(较短数组的长度)较长的行。平均值y
是较短的数组更高,所以我保留最后两行较长的数组。最后,我想要以下结果:
surfs=[np.array([[2., 8.], [2., 9.], [3., 8.], [3., 9.]]), \ # first rectangle
np.array([[3., 8.], [3., 9.], [3., 10.], [4., 8.], [4., 9.], [4., 10.]]),\# second rectangle
np.array([[4., 9.], [4., 10.], [5., 9.], [5., 10.], [6., 9.], [6., 10.]]) # last rectangle]
我尝试了以下代码,但没有成功:
surfs=[]
for i in range(len(sp_ar)-1):
if 1 < len(sp_ar[i]):
if sp_ar[i][-1][1] != sp_ar[i+1][-1][1] or sp_ar[i][0][1] != sp_ar[i+1][0][1]:
if np.mean (sp_ar[i][:,1]) < np.mean (sp_ar[i+1][:,1]):
surfs.append([sp_ar[i],sp_ar[i+1][0:len(sp_ar[i])]])
if np.mean (sp_ar[i][:,1]) > np.mean (sp_ar[i+1][:,1]):
surfs.append([sp_ar[i], sp_ar[i+1][-len(sp_ar[i]):]])
解决方案
推荐阅读
- tensorflow - Highwayhash 包构建中的 TensorFlow 1.15.X 源代码编译出错
- javascript - onPress 事件仅获取数组的最后一个索引 - React Native
- python - 不同火车测试拆分大小的预测差异很大
- php - 删除第一个出现前面的
任何字符串,最后一个
显示之后的任何字符串 - c# - 你能在 C# 中缩短多个链式空检查吗?
- datatables - 如何在 jquery 数据表中隐藏垂直滚动条
- javascript - 从右到左淡化背景
- powerbi - 将 Outlook API 与 M 语言一起使用(Power query、power BI)
- javascript - “承诺{
}" 在控制台中,而不是一个值 - python - 将文档类型映射到 LOINC 文档类型