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

如何利用对称性借助numpy从对称矩阵的八分扇区生成完整矩阵

八重对称矩阵八分扇区还原实现(numpy版)

该需求完全可以通过numpy实现。你给出的输入是9×9八重对称矩阵的1/8扇区数据,利用矩阵的八重对称特性(关于主对角线、副对角线、水平中线、垂直中线均对称),仅需要遍历输入的少量元素,赋值到对应8个对称位置即可得到完整矩阵。


实现代码

import numpy as np

# 输入的八分扇区数据
arr_in = [[1],
          [0, 0],
          [0, 0, 1],
          [0, 0, 0, 0],
          [0, 1, 0, 1, 0]]

sector_size = len(arr_in)
n = 2 * sector_size - 1  # 自动计算完整矩阵边长,此处输出为9
center = n // 2  # 矩阵中心坐标,此处为4
full_mat = np.zeros((n, n), dtype=int)

# 遍历八分扇区所有元素,赋值到8个对称位置
for dy in range(sector_size):
    for dx in range(dy + 1):
        val = arr_in[dy][dx]
        full_mat[center+dx, center+dy] = val
        full_mat[center+dy, center+dx] = val
        full_mat[center+dx, center-dy] = val
        full_mat[center+dy, center-dx] = val
        full_mat[center-dx, center+dy] = val
        full_mat[center-dy, center+dx] = val
        full_mat[center-dx, center-dy] = val
        full_mat[center-dy, center-dx] = val

# 打印结果验证
for row in full_mat:
    print(' '.join(map(str, row)))

输出结果

运行上述代码后,输出结果和你给出的预期矩阵完全一致:

0 1 0 1 0 1 0 1 0
1 0 0 0 0 0 0 0 1
0 0 1 0 0 0 1 0 0
1 0 0 0 0 0 0 0 1
0 0 0 0 1 0 0 0 0
1 0 0 0 0 0 0 0 1
0 0 1 0 0 0 1 0 0
1 0 0 0 0 0 0 0 1
0 1 0 1 0 1 0 1 0

如果输入的扇区长度变化,仅需要修改arr_in即可,代码会自动适配对应边长的对称矩阵。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:27:04