You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何为节点编号分配指定值并生成3×3目标矩阵

实现方法

核心映射规则:

  • 字典nodes的键为目标矩阵T的行列坐标(行索引i, 列索引j)
  • 字典存储的节点编号从1开始计数,和数组A的0-based索引偏移量为1,即编号为n的节点对应取值为A[n-1]

写法1:直观遍历实现(易读性高,适合小规模场景)

直接遍历nodes的键值对,逐位置填充矩阵即可:

import numpy as np

nodes={(0, 0): 1,
 (0, 1): 2,
 (0, 2): 3,
 (1, 0): 4,
 (1, 1): 5,
 (1, 2): 6,
 (2, 0): 7,
 (2, 1): 8,
 (2, 2): 9}
A=np.array([10,20,30,40,50,60,70,80,90])

# 初始化和A同数据类型的3*3空矩阵
T = np.zeros((3, 3), dtype=A.dtype)
# 按映射规则填充值
for (i, j), node_num in nodes.items():
    T[i, j] = A[node_num - 1]

写法2:Numpy向量化实现(性能更高,适合大规模节点场景)

无需显式for循环,批量提取坐标和编号后一次性赋值:

# 批量提取坐标、节点编号
coord_arr = np.array(list(nodes.keys()))
node_id_arr = np.array(list(nodes.values()))

T = np.zeros((3, 3), dtype=A.dtype)
T[coord_arr[:, 0], coord_arr[:, 1]] = A[node_id_arr - 1]

运行上述任意一段代码,得到的T都和预期结果完全一致:

>>> print(T)
[[10 20 30]
 [40 50 60]
 [70 80 90]]

生成的矩阵可以直接传入matplotlib的绘图函数(如plt.imshow()、plt.pcolormesh())使用,输出效果和参考图一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:15:55