You need to enable JavaScript to run this app. Python如何导出规则网格指定点并重排numpy存储的坐标点数组
优惠活动
大模型
产品
解决方案
定价
更多

Python如何导出规则网格指定点并重排numpy存储的坐标点数组

实现代码

import numpy as np

# 示例输入数据
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.]])]

surfs = []
# 过滤长度不足2的无效数组(长度为1的数组无参与矩形计算)
valid_arr = [arr for arr in sp_arr if len(arr) >= 2]
arr_lens = [len(arr) for arr in valid_arr]

# 生成第一个矩形
for i in range(len(valid_arr)-1):
    l_cur, l_next = arr_lens[i], arr_lens[i+1]
    if l_next > l_cur:
        short_arr = valid_arr[i]
        long_arr = valid_arr[i+1]
        mean_short = np.mean(short_arr[:, 1])
        mean_long = np.mean(long_arr[:, 1])
        take_part = long_arr[:l_cur] if mean_long > mean_short else long_arr[-l_cur:]
        surfs.append(np.concatenate([short_arr, take_part], axis=0))
        break

# 生成第二个矩形
max_len = max(arr_lens)
max_len_arrs = [arr for arr in valid_arr if len(arr) == max_len]
surfs.append(np.concatenate(max_len_arrs, axis=0))

# 生成第三个矩形
for i in range(len(valid_arr)-1):
    l_cur, l_next = arr_lens[i], arr_lens[i+1]
    if l_next < l_cur:
        long_arr = valid_arr[i]
        short_len = l_next
        # 收集所有连续长度等于短数组长度的数组
        short_arrs = []
        for j in range(i+1, len(valid_arr)):
            if len(valid_arr[j]) == short_len:
                short_arrs.append(valid_arr[j])
            else:
                break
        mean_short = np.mean(np.concatenate(short_arrs)[:, 1])
        mean_long = np.mean(long_arr[:, 1])
        take_part = long_arr[-short_len:] if mean_short > mean_long else long_arr[:short_len]
        surfs.append(np.concatenate([take_part] + short_arrs, axis=0))
        break

# 输出验证
for idx, surf in enumerate(surfs, 1):
    print(f"第{idx}个矩形坐标:\n{surf}\n")

输出结果

运行后得到的surfs和预期输出完全一致:

第1个矩形坐标:
[[2. 8.]
 [2. 9.]
 [3. 8.]
 [3. 9.]]

第2个矩形坐标:
[[ 3.  8.]
 [ 3.  9.]
 [ 3. 10.]
 [ 4.  8.]
 [ 4.  9.]
 [ 4. 10.]]

第3个矩形坐标:
[[ 4.  9.]
 [ 4. 10.]
 [ 5.  9.]
 [ 5. 10.]
 [ 6.  9.]
 [ 6. 10.]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 15:06:02