Как получить n-й максимальный коэффициент корреляции и его индекс, используя numpy? - PullRequest
1 голос
/ 11 февраля 2020

Я вычисляю коэффициент корреляции следующим образом (просто пример):

a = np.array([[1, 2, 3],
     [4, 7, 9],
     [8, 7, 5]])

corr = np.corrcoef(a)

Результат - матрица корреляции.

Вопрос в том, как получить 1-й, 2-й (или n-й) Наибольший коэффициент?

А его индекс? как [0,1] и [2,1]

1 Ответ

1 голос
/ 11 февраля 2020

Допустим, у вас есть массив NumPy, и вы вычислили коэффициент корреляции следующим образом:

import numpy as np

a = np.array([[1, 2, 3],
     [4, 7, 9],
     [8, 7, 5]])

corr = np.corrcoef(a)

Теперь выровняйте массив, возьмите уникальные коэффициенты и отсортируйте уплощенный массив:

flat=corr.flatten()
flat = np.unique(flat)

Плоский массив выглядит следующим образом:

>> array([-0.98198051, -0.95382097,  0.99339927,  1. ])

Теперь, чтобы выбрать nth largest элемент, просто выберите правильный индекс:

largest = flat[-1]
second_largest = flat[-2]

print(largest)
print(second_largest)
>> 1.0
>> 0.9933992677987828

Чтобы найти индексы соответствующего коэффициента:

result = np.where(corr == largest)
indices = np.array(result)
print(indices)

Это распечатывает следующий массив. Таким образом, индексы с наибольшим коэффициентом (0,0), (1,1) и (2,2).

>> array([[0, 1, 2],
       [0, 1, 2]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...