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

Python如何对方阵整数倍Scale/resize且保留网格结构

整数倍矩阵块缩放实现

你对缩放规则的判断完全正确,这种操作是整数因子的块复制上采样:仅支持正整数n作为缩放因子,原矩阵每个元素会被替换为n×n的同值子块,最终输出矩阵尺寸为原矩阵行数*n × 原矩阵列数*n,你给出的示例就是n=2时3×3单位矩阵放大为6×6块对角矩阵的标准结果。

实现方案

无依赖纯Python实现

不需要安装任何第三方库,按行、列两个维度做元素复制即可:

  1. 遍历原矩阵每一行,将行内每个元素重复n次,得到宽度放大n倍的中间行
  2. 将每个中间行整体重复n次追加到结果中,完成高度方向的放大
    代码如下:
def upscale_matrix(original_mat, n):
    result = []
    for row in original_mat:
        # 行方向扩展:每个元素重复n次
        expanded_row = []
        for value in row:
            expanded_row += [value] * n
        # 列方向扩展:整行重复n次
        for _ in range(n):
            result.append(expanded_row.copy())
    return result

# 验证示例
arr = [[1,0,0], [0,1,0], [0,0,1]]
largeArr = upscale_matrix(arr, 2)
for r in largeArr:
    print(r)

运行后输出和你给出的6×6矩阵完全一致:

[1, 1, 0, 0, 0, 0]
[1, 1, 0, 0, 0, 0]
[0, 0, 1, 1, 0, 0]
[0, 0, 1, 1, 0, 0]
[0, 0, 0, 0, 1, 1]
[0, 0, 0, 0, 1, 1]

NumPy高效实现

如果是做数值计算、处理大尺寸矩阵,直接用NumPy内置的repeat方法即可,不需要手写循环,运行效率高很多:

import numpy as np

arr = np.array([[1,0,0], [0,1,0], [0,0,1]])
n = 2
largeArr = arr.repeat(n, axis=1).repeat(n, axis=0)
print(largeArr)

注意:如果使用非整数缩放因子,必须引入插值逻辑,会破坏原矩阵的离散块结构,无法保留原本的网格排布规律,不符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:39:20