You need to enable JavaScript to run this app. NumPy中如何将ravel转换后的坐标列表还原为np.mgrid生成的x、y数组
优惠活动
大模型
产品
解决方案
定价
更多

NumPy中如何将ravel转换后的坐标列表还原为np.mgrid生成的x、y数组

从扁平化坐标列表还原np.mgrid生成的二维网格数组

实现原理

你生成坐标列表的流程,本质是对二维形态的x、y网格数组执行ravel()(默认采用行优先/C序拉平),再将两个拉平后的1D序列按列拼接为二维坐标数组。逆向操作不需要提前知道原始网格的尺寸、范围、步长,仅靠坐标列表本身即可完成无损还原。

可直接使用的还原函数

import numpy as np

def foo(coords):
    # 拆分坐标列表中的x、y方向1D值序列
    flat_x, flat_y = coords.T
    # 推断网格行列数:x方向唯一值数量=网格行数,y方向唯一值数量=网格列数
    grid_rows = np.unique(flat_x).size
    grid_cols = np.unique(flat_y).size
    # 按原拉平顺序reshape回二维网格结构
    restored_x = flat_x.reshape(grid_rows, grid_cols)
    restored_y = flat_y.reshape(grid_rows, grid_cols)
    return restored_x, restored_y

效果校验

可直接用你示例中的网格做测试,验证还原精度:

# 原始生成网格
x_original, y_original = np.mgrid[0:5:5j, 0:5:5j]
# 生成坐标列表(与你提供的转换逻辑完全一致)
coords = np.vstack((x_original.ravel(), y_original.ravel())).T
# 调用还原函数
x_restored, y_restored = foo(coords)
# 校验数组一致性
print(np.array_equal(x_original, x_restored))  # 输出 True
print(np.array_equal(y_original, y_restored))  # 输出 True

适配说明

  • 该方法完全匹配你示例中的转换逻辑,还原后的数组shape、数值与原始np.mgrid输出无任何差异。
  • 如果当初生成坐标列表时,拉平操作改用列优先(F序)规则,仅需要在reshape时传入order='F'参数即可正常还原。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 23:15:06