如何高效构建对应指定上对角线的numpy/pandas矩阵?
高效构建目标DataFrame的向量化方案
- 首先明确矩阵维度:数组
systems长度为11,因此目标矩阵h是12×12的方阵(偏移1的上对角线元素数量等于矩阵行数-1) - 直接用Numpy的向量化索引赋值替代循环操作,效率提升显著,且天然支持64位整数类型:
import numpy as np import pandas as pd systems = np.array([1, 3, 1, 7, 1, 15, 1, 7, 1, 3, 1], dtype=np.int8) # 确定矩阵尺寸,可直接适配任意长度的systems mat_size = len(systems) + 1 # 初始化64位整数类型的全零矩阵 h_mat = np.zeros((mat_size, mat_size), dtype=np.int64) # 向量化赋值偏移1的上对角线 row_indices = np.arange(len(systems)) col_indices = np.arange(1, mat_size) h_mat[row_indices, col_indices] = systems # 转换为DataFrame h = pd.DataFrame(h_mat)
- 验证结果:执行
np.diagonal(h, 1)会完全匹配systems数组 - 优势:避免循环的逐元素操作,利用Numpy底层优化大幅提升速度,通过指定
dtype=np.int64直接满足后续64位整数处理需求
内容的提问来源于stack exchange,提问作者oppressionslayer
相关产品推荐
相关产品推荐

