如何在Python中创建指定结构的多维矩阵?
创建指定结构的多维矩阵
纯Python实现
不用依赖第三方库,直接用列表推导式就能快速生成:
matrix = [[i, j] for i in range(4) for j in range(1, 4)] print(matrix)
运行后会得到你需要的结构:
[ [0,1], [0,2], [0,3], [1,1], [1,2], [1,3], [2,1], [2,2], [2,3], [3,1], [3,2], [3,3] ]
原理很直观:range(4)生成0到3的整数,range(1,4)生成1到3的整数,双重循环遍历所有数值组合,把每对组合包装成子列表即可。
NumPy实现
如果想用NumPy生成目标结构,核心是生成两组数的笛卡尔积,这里提供两种常用写法:
方法1:结合itertools.product转数组
import numpy as np from itertools import product # 生成所有(i,j)组合,再转换为NumPy数组 np_matrix = np.array(list(product(range(4), range(1, 4)))) print(np_matrix)
方法2:用NumPy自带的meshgrid
import numpy as np i = np.arange(4) j = np.arange(1, 4) # 生成网格并调整形状得到目标结构 np_matrix = np.array(np.meshgrid(i, j)).T.reshape(-1, 2) print(np_matrix)
两种方法都会输出和目标一致的NumPy数组,如果需要转回普通Python列表,调用.tolist()方法即可:np_matrix.tolist()
内容的提问来源于stack exchange,提问作者Lex
相关产品推荐
相关产品推荐

