如何基于pandas参考关联表按指定向量生成对应维度动态矩阵
实现方案
你要的效果可以直接通过pandas原生的标签索引功能一步实现,无需手动写循环或map逻辑,天然支持动态长度的向量输入:
import pandas as pd # 参考关联表 corr = pd.DataFrame({'i':['a','b'],'a':[.1,.2],'b':[.2,.1]}).set_index('i') # 向量数据 vectors = pd.DataFrame({'val':['a','b','a','a','b']}) # 核心生成逻辑:直接按向量值做行、列标签索引即可输出对应维度的矩阵 val_seq = vectors['val'] result_df = corr.loc[val_seq, val_seq] # 如果需要纯numpy数组格式的结果,再加.values即可:result_arr = result_df.values
逻辑说明
目标矩阵第i行第j列的取值,本质是向量第i个元素和第j个元素在关联表中的交叉对应值。pandas的loc索引支持直接传入标签序列作为行、列筛选条件,会自动按照传入序列的顺序匹配关联表的行和列,返回和向量长度一致的N×N矩阵,无论向量长度怎么变都不需要修改代码逻辑。
内容的提问来源于stack exchange,提问作者RealRageDontQuit
相关产品推荐
相关产品推荐

