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

如何将图像2x2子矩阵broadcast到同尺寸零矩阵以获得指定输出结果

3x4矩阵滑动2x2窗口生成对应全零填充矩阵实现方案

实现逻辑

你需要的效果本质是对原3行4列矩阵做2x2尺寸的滑动窗口遍历,每个窗口单独放到同尺寸全零矩阵的对应位置,总共有(3-2+1)*(4-2+1) = 6个结果,和你给出的输出数量完全匹配:

  • 行方向窗口起始位置可选值:0、1(共2种,保证窗口不会超出原矩阵行边界)
  • 列方向窗口起始位置可选值:0、1、2(共3种,保证窗口不会超出原矩阵列边界)

代码实现

NumPy版本(最简洁,适合图像处理场景)

import numpy as np

# 定义原3x4图像矩阵
img = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
kernel_size = 2
rows, cols = img.shape
result = []

# 遍历所有合法的窗口起始坐标
for i in range(rows - kernel_size + 1):
    for j in range(cols - kernel_size + 1):
        # 初始化同尺寸全零矩阵
        zero_mat = np.zeros_like(img)
        # 把对应位置的2x2子矩阵赋值到全零矩阵
        zero_mat[i:i+kernel_size, j:j+kernel_size] = img[i:i+kernel_size, j:j+kernel_size]
        result.append(zero_mat)

# 打印验证结果
for item in result:
    print(item.tolist())
    print()

原生Python列表版本(无需依赖第三方库)

# 定义原3x4图像矩阵
img = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
kernel_size = 2
rows = len(img)
cols = len(img[0])
result = []

# 遍历所有合法的窗口起始坐标
for i in range(rows - kernel_size + 1):
    for j in range(cols - kernel_size + 1):
        # 初始化同尺寸全零矩阵
        zero_mat = [[0]*cols for _ in range(rows)]
        # 逐个赋值2x2窗口的元素
        for di in range(kernel_size):
            for dj in range(kernel_size):
                zero_mat[i+di][j+dj] = img[i+di][j+dj]
        result.append(zero_mat)

# 打印验证结果
for item in result:
    print(item)
    print()

以上两种实现运行后输出的结果和你给出的示例完全一致。

内容的提问来源于stack exchange,提问作者opiyo philip lutaya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:18:02