如何基于给定的dimension和order生成对应的乘数矩阵
生成指定维度和阶数的全组合矩阵通用方案
你需要的本质是0到order(含两端)的整数在dimension维下的全笛卡尔积,结果每一行对应一个dim维的取值组合,整体形状满足( (order + 1) ** dimension, dimension )。
原生Python实现(无第三方依赖)
直接用标准库itertools.product即可实现,代码简单易读:
import itertools def generate_comb_matrix(dimension: int, order: int) -> list: value_range = range(order + 1) return [list(item) for item in itertools.product(value_range, repeat=dimension)]
测试验证:传入
dimension=2, order=3调用函数,返回结果长度为(3+1)**2=16,每个子列表长度为2,和示例要求的结构完全一致。
Numpy实现(适合数值计算场景)
如果需要生成numpy数组格式的结果,或者参数较大追求运算效率,可以用如下实现:
import numpy as np def generate_comb_matrix_np(dimension: int, order: int) -> np.ndarray: value_range = np.arange(order + 1) grids = np.meshgrid(*[value_range for _ in range(dimension)], indexing='ij') return np.stack(grids, axis=-1).reshape(-1, dimension)
测试验证:传入
dimension=2, order=3调用函数,返回的数组形状为(16, 2),符合要求。
两种方案都可以自由适配任意正整数的dimension和order参数,直接调用即可。
内容的提问来源于stack exchange,提问作者Muhammed
相关产品推荐
相关产品推荐

