首页 > 解决方案 > 来自非方阵的非对角线元素

问题描述

我有以下日期范围

df=pd.DataFrame.from_dict({'month':['January','February','March','April','May','June','July','August','September','October','November','December'], 'Tonnes':[1,2,3,4,5,6,7,8,9,10,11,12]})

需要只有非对角元素的对角相关矩阵。在过去的帖子的指导下尝试过,但都在查看nxn数组

预期输出:

columns = ['January','February','March','April','May','June','July','August','September','October','November','December']
index= ['January','February','March','April','May','June','July','August','September','October','November','December']
data=np.array([[ 'nan', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X',
        'X'],
       [ 'X', 'nan', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X',
        'X', 'X'],
       [ 'X', 'X', 'nan', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X',
        'X'],
       [ 'X', 'X', 'X', 'nan', 'X', 'X', 'X', 'X', 'X', 'X', 'X',
        'X'],
       [ 'X', 'X', 'X', 'X', 'nan', 'X', 'X', 'X', 'X', 'X', 'X',
        'X'],
       [ 'X', 'X', 'X', 'X', 'X', 'nan', 'X', 'X', 'X', 'X', 'X',
        'X'],
       [ 'X', 'X', 'X', 'X', 'X', 'X', 'nan', 'X', 'X', 'X', 'X',
        'X'],
       [ 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'nan', 'X', 'X', 'X',
        'X'],
       [ 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'nan', 'X',
        'X', 'X'],
       [ 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'nan', 'X',
        'X'],
       [ 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X',
        'nan', 'X'],
       [ 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X',
        'X', 'nan']])
matrix=pd.DataFrame(data,index=index,columns=columns)

标签: pythonpython-3.xpandasnumpy

解决方案


您可以选择具有布尔掩码和整形的非对角元素:

data[~np.eye(len(data), dtype=bool)].reshape(len(data)-1, -1)

推荐阅读