es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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).

Tags:  , ,

Answer

  1. Avatar for 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:

    import numpy as np
    
    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]])
    
    matriz_corr = np.corrcoef(a.T, b.T) # calcular matriz de correlación
    correlaciones = matriz_corr[:3, 3:] # dividir la matriz para extraer las correlaciones de interés
    

    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.

Comments are closed.