如何向numpy零值网格的对应坐标位置赋值
实现方案
核心逻辑是先建立s1、s2中的浮点坐标值和网格整数索引的映射关系,再通过索引完成对应位置的赋值,具体实现如下:
场景1:按需给指定坐标赋值
适合需要零散给部分坐标赋值的场景:
import numpy as np # 初始参数 s1 = [0, 0.25, 0.5, 0.75, 1.0] s2 = [0, 0.25, 0.5, 0.75, 1.0] grid = np.zeros((5, 5)) # 构建坐标值到网格索引的映射字典 s1_to_idx = {val: idx for idx, val in enumerate(s1)} s2_to_idx = {val: idx for idx, val in enumerate(s2)} # 示例:给坐标(0, 0)的位置赋值5 x, y = 0, 0 grid[s1_to_idx[x], s2_to_idx[y]] = 5 # 示例:批量给多个坐标赋值 coord_value_pairs = [ ((0, 0.25), 3), ((0.5, 0.75), 10), ((1.0, 1.0), 8) # 剩余需要赋值的坐标和数值可直接按格式追加到列表中 ] for (x, y), val in coord_value_pairs: grid[s1_to_idx[x], s2_to_idx[y]] = val
场景2:全量25组坐标的数值已按顺序生成
如果已经按(0,0)→(0,0.25)→…→(0,1)→(0.25,0)→…→(1,1)的顺序生成了长度为25的数值列表,可以直接重构为5×5网格:
# 示例:长度为25的数值列表,顺序和坐标排列顺序完全对应 all_values = [5, 3, 2, 1, 4, 6, 7, 2, 1, 3, 5, 7, 8, 2, 1, 4, 3, 2, 5, 7, 9, 3, 2, 1, 8] grid = np.array(all_values).reshape(5, 5)
注意事项
- 上述方案默认
s1对应网格行索引、s2对应网格列索引,可根据自身坐标对应规则调整两个映射字典的调用顺序 - 该方案仅适用于
s1、s2内部无重复值的场景,和当前给出的参数列表适配
内容的提问来源于stack exchange,提问作者user16936122
相关产品推荐
相关产品推荐

