Articles of linear algebra

calcular la media y la covarianza de una matriz grande (300000 x 70000)

Estoy usando Numpy y tratando de calcular la media y la covarianza de una matriz grande (300000 x 70000). Tengo memoria de tamaño de 32GB disponible. ¿Cuál es la mejor práctica para esta tarea en términos de eficiencia computacional y facilidad de implementación? Mi implementación actual es la siguiente: def compute_mean_variance(mat, chunk_size): row_count = mat.row_count […]

Producto tensor exterior rápido en cantidad.

Tengo dos matrices numpy: x of shape ((d1,…,d_m)) y of shape ((e_1,…e_n)) Me gustaría formar el producto tensor externo, que es la matriz numpy z of shape ((d1,…,d_m,e_1,…,e_n)) tal que z[i_1,…,i_n,i_{n+1}…,i_{m+n}] == x[i_1,…i_m]*y[i_{m+1},…,i_{m+n}] Tengo que realizar la multiplicación externa anterior varias veces, así que me gustaría acelerar esto lo más posible.

Scipy.linalg.eig () que proporciona diferentes vectores propios de eig () de GNU Octave

Quiero calcular los valores propios para un problema de valores propios generalizados con lambda * M * v = K * v, donde lambda es el valor propio, v es un vector propio, y M y K son matrices. Digamos que tenemos K = 1.8000 + 0.0000i -1.0970 + 0.9550i -1.0970 – 0.9550i 1.8000 + […]

Combina las expresiones de Einsum

Me gustaria evaluar E = np.einsum(‘ij,jk,kl->ijkl’,A,A,A) F = np.einsum(‘ijki->ijk’,E) donde A es una matriz (no más de 1000 por 1000 de tamaño). La computación E es lenta. Me gustaría acelerar esto calculando solo los elementos “diagonales” que almaceno en F. ¿Es posible combinar estas dos expresiones? / ¿Hay alguna forma mejor de acelerar este cálculo?

¿Invertir a la izquierda en adormecer o scipy?

Estoy tratando de obtener el inverso izquierdo de una matriz no cuadrada en python utilizando numpy o scipy. ¿Cómo puedo traducir el siguiente código de Matlab a Python? >> A = [0,1; 0,1; 1,0] A = 0 1 0 1 1 0 >> y = [2;2;1] y = 2 2 1 >> A\y ans = […]

¿Por qué los diferentes métodos para resolver Xc = y en python dan una solución diferente cuando no deberían?

Estaba tratando de resolver un sistema lineal Xc=y que era cuadrado. Los métodos que conozco para resolver esto son: usando inversa c= utilizando la eliminación de Gauss utilizando el pseudoinverso Por lo que puedo decir, parece que no coinciden con lo que pensé que sería la verdad fundamental. Primero genere los parámetros de verdad ajustando […]

¿Matrices / vectores concatenados en Python como en MATLAB?

Sean A , x , y , z algunos vectores o matrices de tamaño apropiado. Luego, en MATLAB se puede construir una “super matriz” B muy fácilmente: A = [1 2;3 4]; x = [4;5]; y = [1 2]; z = 4; B = [A x;yz]; La salida es: >> B B = 1 2 […]

Función mrdivide en MATLAB: ¿qué está haciendo y cómo puedo hacerlo en Python?

Tengo esta línea de código MATLAB: a/b Estoy usando estas entradas: a = [1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9] b = ones(25, 18) Este es el resultado (una matriz de 1×25): [5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] ¿Qué está haciendo MATLAB? Estoy intentando duplicar este comportamiento en Python, y la documentación de mrdivide en MATLAB fue inútil. ¿De dónde vienen los 5 y por qué […]

¿Cómo dibujar planos de un conjunto de ecuaciones lineales en Python?

Tengo un sistema lineal con tres ecuaciones: x 1 – 2x 2 + x 3 = 0 2x 2 – 8x 3 = 8 -4x 1 + 5x 2 + 9x 3 = -9 El conjunto de soluciones es (29, 16, 3), que es un punto en la intersección de estos planos. Esperando que alguien […]

Suma sobre matriz cuadrada

Como parte de un cómputo de distancia euclidiana por lotes, estoy computando (X * X).sum(axis=1) donde X es una matriz 2-d bastante grande. Esto funciona bien, pero construye una matriz temporal del mismo tamaño que X ¿Hay alguna forma de deshacerse de este temporal, pero conservando la eficiencia de una operación vectorizada? El candidato obvio, […]