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

如何使用Numpy生成示例所示的嵌套方框结构9×9矩阵

NumPy生成嵌套方框矩阵实现方法

实现思路说明

你的第二种思路是可行的,这个矩阵本质是三层嵌套的正方形边框,对应偏移量k=0、2、4的三层边框,只要给每一层边框的位置赋值为1即可。

方案1:基于全零矩阵逐层赋值

步骤:

  • 生成9×9的全0整数矩阵
  • 循环处理k=0、2、4三个偏移量,每次给对应子矩阵的上下左右四个边赋值为1

代码示例:

import numpy as np

# 生成9x9全0矩阵
mat = np.zeros((9, 9), dtype=int)
# 逐层处理嵌套边框
for k in range(0, 5, 2):
    # 赋值当前层上下边
    mat[k, k:9-k] = 1
    mat[-(k+1), k:9-k] = 1
    # 赋值当前层左右边(避免重复赋值边角)
    mat[k+1:8-k, k] = 1
    mat[k+1:8-k, -(k+1)] = 1

print(mat)

方案2:使用np.where实现

步骤:

  • 用np.indices生成矩阵每个位置的x、y坐标网格
  • 写出三层嵌套边框的判断条件
  • 用np.where根据条件给对应位置赋值1,其余为0

代码示例:

import numpy as np

x, y = np.indices((9, 9))
# 三层边框判断条件
cond = (
    (x == 0) | (x == 8) | (y == 0) | (y == 8) |
    ((x >=2) & (x <=6) & (y >=2) & (y <=6) & ((x==2) | (x==6) | (y==2) | (y==6))) |
    (x == 4) & (y == 4)
)
mat = np.where(cond, 1, 0)
print(mat)

两种方案运行后输出的矩阵都和你给出的示例完全一致。如果需要生成更大尺寸的同类型矩阵,只要把尺寸改为奇数,调整循环范围或者条件判断的边界值即可。

内容的提问来源于stack exchange,提问作者sudo rm -rf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:15:03