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

如何通过通用矩阵扩展算法,应用元素方阵映射得到二维输出矩阵

实现方法

这个操作本质是对原矩阵的每个元素做自定义映射后做块拼接,效果等价于带自定义生成规则的克罗内克积,最终输出的矩阵尺寸为原矩阵行数×小矩阵阶数 × 原矩阵列数×小矩阵阶数。

纯Python实现(无第三方依赖)

from typing import List, Tuple

# 你提供的expand函数
def expand(v: int) -> Tuple[Tuple[float, float], Tuple[float, float]]:
    return ((1.1, 2.2), (3.3, 4.4))

# 原矩阵
M = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# 先获取expand生成的小方阵的阶数
k = len(expand(0))
result = []

for raw_row in M:
    # 初始化当前原行对应的k行块
    block_rows = [[] for _ in range(k)]
    for val in raw_row:
        small_mat = expand(val)
        # 把小矩阵的每行拼到对应块行的末尾
        for idx in range(k):
            block_rows[idx].extend(small_mat[idx])
    # 把当前块的所有行追加到最终结果
    result.extend(block_rows)

# 输出验证尺寸,示例中应为6行6列
print(len(result), len(result[0]))
print(result)

Numpy简洁实现

如果允许使用第三方库,用numpy的block方法可以快速完成块拼接:

import numpy as np
from typing import Tuple

def expand(v: int) -> Tuple[Tuple[float, float], Tuple[float, float]]:
    return ((1.1, 2.2), (3.3, 4.4))

M = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# 先生成按块排列的小矩阵列表
block_grid = [[expand(val) for val in row] for row in M]
# 直接拼接为二维矩阵
result = np.block(block_grid)

# 转为普通列表可选
print(result.tolist())

两种方法最终输出的都是符合要求的6×6二维矩阵,不会生成四维中间结构。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:18:04