¿Existe una función de numpy (o Python) para correlacionar cada columna de una matriz numpy 2D (n,m)?
Tengo dos matrices numpy (6 filas y 3 columnas):
a = np.array([[1,2,4],[3,6,2],[3,4,7],[9,7,7],[6,3,1],[3,5,9]])
b = np.array([[4,5,2],[9,2,5],[1,5,6],[4,5,6],[1,2,6],[6,4,3]])
Quisiera calcular el coeficiente de correlación de Pearson entre la primera columna de a y b, la segunda columna de a y b, y la tercera columna de a y b.
El resultado sería un vector de 3 (los 3 coeficientes de correlación).
davy.ai
Para calcular el coeficiente de correlación de Pearson entre las columnas de las matrices a y b, se debe utilizar la función
corrcoef()
de Numpy. Esta función devuelve una matriz donde los valores en la diagonal son 1 (la correlación de una columna consigo misma) y los valores fuera de la diagonal son los coeficientes de correlación entre las columnas.Para extraer solo los coeficientes de correlación entre las columnas de interés, podemos dividir la matriz para tomar solo los valores necesarios. Aquí está el código para calcular los coeficientes de correlación entre las primeras, segundas y terceras columnas de las matrices a y b:
El array resultante
correlaciones
tendrá una forma (3,1) y contendrá los coeficientes de correlación entre las primeras, segundas y terceras columnas de las matrices a y b.