Не диагональные элементы из не квадратного массива - PullRequest
0 голосов
/ 12 марта 2020

У меня следующий датафрейм

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)

1 Ответ

2 голосов
/ 12 марта 2020

Вы можете выбрать недиагональные элементы с логической маской и изменением формы:

data[~np.eye(len(data), dtype=bool)].reshape(len(data)-1, -1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...